Matlab guide简介和简单使用

  • 简介
  • 快捷键
    • 1.对其对象键
    • 2.菜单编辑器
      • 两种菜单的设计方法
    • 3.Tab键顺序编辑器
    • 4.属性检查器
  • gui数据管理机制
  • guide实例
    • 实例一画图
    • 实例二显示时间
    • 实例三鼠标响应
    • 实例四键盘响应

简介

guIde有四种设计模板

这四种模板的具体描述为:

选择模板创建gui后,会产生.fig文件以及一个同名字的M文件【注:不可更改为不一致的文件名,否则运行要出错】

在窗口的左边的小图标,称为控件面板,各个小图标即控件;上方的菜单啥的就是一些快捷按钮了,把鼠标放到上方就会出现对应的功能描述,下面将一一介绍

快捷键

1.对其对象键

利用该键可以将多个对象进行位置调整,可以使gui设计界面简洁美观

2.菜单编辑器

创建,设计,修改下拉式菜单和快捷菜单

菜单编辑器中有:新建菜单、新建菜单项、新建上下文菜单,然后四个移动选定项的箭头以及删除选定项的按钮。
注:标记就是tag值,所以就可以用handles结构体进行一系列操作

两种菜单的设计方法

(1)菜单栏设计
①基本使用
选中Untitled 1然后点击新建菜单项,就会在此菜单下新建子菜单,那四个箭头可以改变菜
然后点确定,也可以加上快捷键如图可以看到,回到GUI窗口,运行保存


②如何在子菜单中加入回调函数
界面上方(子菜单1)用按钮绘制sin图像和清空图像,界面下方(子菜单2)用按钮控制显示图片
guide界面如下设置

为了不在主菜单显示有关控件,将所有控件visible设置off

然后就可以在子菜单中加入回调函数,代码如下

%子菜单1显示控件代码
h1=[handles.axes1 handles.sin handles,clear];
set(h1,'visible','on');
h2=[handles.axes2 handles.picture];
set(h2,'visible','off');


这样就可以在子菜单1中显示,子菜单2类似代码。之后就可以在相关按钮上加入回调函数实现功能,这里着重展示显示图片的代码

%在显示图像按钮的回调中写
[filename,filepath]=uigetfile({'*.bmp;*.png;*.jpg;'},'选择图像');%将可导入的文件类型写下来
if(isequal(filename,0)||isequal(filepath,0)) %如果按了取消,则returnreturn;
end
image = [filepath,filename]; %将文件名保存下来,并作为全局变量,方便后面程序调用
im=imread(image);%读图
axes(handles.axes2);%axes载入图片,所以这句代码意思是在坐标轴2下画图
imshow(im);

注意filename中保存的是文件名,filepath中保存的是路径,注意第二句代码中一定是filepath在前,以便后面可以读取到文件。

(2)上下文菜单,这个是相当于给组件添加右键菜单的
先创建好菜单

然后回到GUI窗口,进行操作


这时候按钮还未赋予右键菜单的能力,先右键找到属性检查器并打开,将UIContextMenu的选项None改为刚刚创建的菜单”Untitled 4“,即赋予了该按钮右键菜单是Untitled 4


这时候回到GUI窗口,运行图形,在出现的界面,在按钮上右键,弹出Untitled 4下5和6的菜单选项

右键菜单也可以调用回调函数,类似上面

3.Tab键顺序编辑器

通过该工具可以设置,当用户按下Tab键时对象被选中的先后顺序

4.属性检查器

可以查看对象的属性并修改

gui数据管理机制

①gui数据可以看成handles结构体,handles结构体包括gui界面设计对象的句柄值,这些句柄值由该对象的Tag值所呈现。所以,句柄值=handles.Tag值
实例,我们若想按下一个按钮,其一个静态文本将显示按钮的名字。我们将按钮的Tag改成a,静态文本Tag改成s,实现代码如下

set(handles.s,'String',get(handles.a,'String'));

②我们可以自己定义一个handes结构体,但定义之后,其后面必须用guidata(hobject,handles)更新数据
③什么是对象或者数据的一致访问?
先创建一个按钮,那我们是否可以handles.push访问这个对象呢?运行报错,why?因为这个push从未被定义,是个非法字段。那该如何才能跟guide界面上的对象一样能访问呢

uicontrol('style','pushbutton','tag','push');
首先将用户创建的对象用句柄值记录 h=uicontrol('style','pushbutton','tag','push');
其次将句柄值赋给handles的某一字段中,为了保持访问一致性,将其tag值做为字段名 handles.push=h;
最后再用guidata更新数据

④如何给用户创建的对象加回调函数
先在opening函数中加入

h=uicontrol('style','pushbutton','tag','push','Callback',{@push_Callback,handles});
handles.push=h;

最后就可以写入回调函数,这里使用一般按钮加入回调,按钮回调一般模式
tag值_Callback,这里写什么都行,只要上下保持一致就行

function push_Callback(hObject, eventdata, handles)
具体调用的函数 如:set(handles.s,'String',get(handles.a,'String'));

guide实例

实例一画图

按下三个按钮绘制sin cos tan 还有清除键clear
主要代码如下

在opening函数中定义一个自变量,方便使用
function untitled2_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.x=-pi:0.01:pi; %定义一个自变量,这样定义就可以在别的handles中相互调用
% Update handles structure
guidata(hObject, handles);
sin,cos,tan函数底层
function sin_Callback(hObject, eventdata, handles)
x=handles.x;
y=sin(x);
plot(handles.zuo,x,y,'--r');
function cos_Callback(hObject, eventdata, handles)
x=handles.x;
y=cos(x);
plot(handles.zuo,x,y,':b');
function tan_Callback(hObject, eventdata, handles)
x=handles.x;
y=tan(x);
plot(handles.zuo,x,y,'k');
function clear_Callback(hObject, eventdata, handles)
trydelete(allchild(handles.zuo)); %allchild函数:找到某一句柄的所有子对象
end

结果

实例二显示时间

用matlab的timer函数,timer对象常用的属性如下(详细参考官方文档):
TimerFcn: 定时到达之后所执行的回调函数
ExecutionMode: 执行模式,下面四种:
sigleShot;只执行一次,故Period属性不起作用,其他模式都可以执行多次
fixedDelay;上一次开始执行到下一次被加入执行队列时刻之间的间隔
fixedRate;前后两次加入执行队列的间隔时间
fixedSpacing: 第一次执行完毕到下一次加入执行队列的时间
注:执行队列是指过一会才开始执行


代码如下:

%在opening函数加入
handles.ht = timer(...,'ExecutionMode', 'FixedRate', ...'Period', 1, ...'TimerFcn', {@ShowTime, handles}); %生成一个定时器start(handles.ht);%启动定时器
%自己写的回调函数
function ShowTime(hObject, eventdata, handles)
set(handles.showtime, 'String', datestr(now));%datestr函数获取当前时间

实例三鼠标响应

跟鼠标有关的回调函数
(1)函数WindowButtonMotionFcn,当鼠标在窗口上运动的时候就会相应此函数,于是在此函数中可以设置运动时想要的代码
(2)函数WindowButtonDownFcn,当鼠标按下去的时候就会响应的函数,但是鼠标按下分为左键和右键,如下区分:

if strcmp(get(gcf,'SelectionType'),'alt')% 此时即为右键
else if strcmp(get(gcf,'SelectionType'),'normal')% 此时即为左键end

用属性SelectionType用来判断鼠标按键的类型
normal:代表单击鼠标左键;
extend:代表Shift+左键,或者同时按左右键;
alt:代表Ctrl+左键,或者单击右键;
open:代表双击鼠标任意键。
(3)函数WindowButtonUpFcn,当鼠标被按下后起来的时候的响应函数,同理,可以在里面设置自己想要的代码。

现在开始编写代码,由于我们要按下鼠标,松开鼠标,鼠标移动,但是这三者是不同的回调函数,为了传递数据,先在openging函数中定义两个全局变量

global buttondown pos1
buttondown=[]; %鼠标是否按下
pos1=[];       %鼠标位置

首先确定鼠标是否右键按下

%在WindowButtonDownFcn函数中
global buttondown pos1
if strcmp(get(gcf, 'SelectionType'), 'alt') buttondown = 1;pos1 = get(handles.axes1, 'CurrentPoint');
end

鼠标松开

%在windowbuttonupfcn函数中写
global buttondown
buttondown=0;

鼠标移动

%在WindowButtonMotionFcn函数中写
global buttondown pos1
if buttonDown == 1pos = get(handles.axes1, 'CurrentPoint');line([pos1(1, 1) pos(1, 1)], [pos1(1, 2) pos(1, 2)], 'LineWidth', 4);pos1 = pos;
end

实例四键盘响应

主要是在KeyPressFcn回调函数中编写代码,通过figure属性的CurrentCharacter判断按下的acsall值
按下回车登录界面

主要代码

%在登录按钮的回调函数
name=get(handles.name,'string');
code=get(handles.code,'string');
if strcmp(name,'king')&&strcmp(code,'1111')delete(gcf);%关闭当前界面untitled_time;
end
%通过键盘按键登录,此例是按下回车
if get(gcf,'CurrentCharacter')==13 %判断按下的是否是回车键name=get(handles.name,'String');code=get(handles.code,'String');if strcmp(name,'king') && strcmp(code,'1111')%字符串比较delete(gcf);%关闭当前的窗口untitled_time;%打开新的GUIDEendend

matlab guide的简介和简单使用相关推荐

  1. 【gTest】gtest简介及简单使用

    [gTest]gtest简介及简单使用 gtest是一个跨平台(Liunx.Mac OS X.Windows.Cygwin.Windows CE and Symbian)的C++测试框架,有googl ...

  2. matlab的PDE工具箱的简单使用

    matlab的PDE工具箱的简单使用_LSEC小陆的博客-CSDN博客_matlab pde pdetool工具箱的使用浅析_DavidEnterpriseStar的博客-CSDN博客_pdetool

  3. Spring AOP 简介以及简单用法

    Spring AOP 简介以及简单用法 如果你去面试java开发, 那么Spring的AOP和DI几乎是必问的问题. 那么AOP是什么呢? 一. AOP 所谓Aop就是 Aspect-Oriented ...

  4. matlab编程进行卡尔曼滤波的简单例子

    1.matlab编程进行卡尔曼滤波的简单例子 clear N=50; x(1)=0; %理论速度初值v(1)=0 ut=-270; %加速度值 F=1; %状态转移矩阵 B=0.01; %控制矩阵 步 ...

  5. 重要性采样(Importance Sampling)简介和简单样例实现

    重要性采样(Importance Sampling)简介和简单样例实现 在渲染领域,重要性采样这个术语是很常见的,但它究竟是什么呢?我们首先考虑这样的一种情况: 如果场景里有一点P,我们想计算P点的最 ...

  6. ONENET平台简介及简单的接入方法

    ONENET平台简介及简单的接入方法 OneNET是中国移动物联网有限公司响应"大众创新.万众创业"以及基于开放共赢的理念,面向公共服务自主研发的开放云平台,为各种跨平台物联网应用 ...

  7. knockout.js的简介和简单使用

    1.knockout简介 knockout是一个轻量级的UI类库,通过MVVM模式使JavaScript前端UI简单化 knockout有四大重要概念: 1)声明式绑定:使用简明移读的语法很容易地将模 ...

  8. dbus的代码范例 linux_Dbus简介与简单的收发示例程序

    Dbus简介与简单的收发示例程序. D-BUS 是一个大有前途的消息总线和活动系统,正开始深入地渗透到 Linux® 桌面之中.了解创建它的原因.它的用途以及发展前景. D-BUS 本质上是 进程间通 ...

  9. matlab组织的培训讲义,MATLAB与Simulink简介培训讲义.ppt

    MATLAB与Simulink简介培训讲义 1 MATLAB的安装与启动 1.MATLAB的安装 2.MATLAB的启动 2 MATLAB指令窗 1.工具条 2.菜单选项 File(文件) Edit( ...

最新文章

  1. 研究报告:城市大脑的起源、现状与未来趋势
  2. python实例讲解wxpythonhyh123_Python实例讲解 -- wxpython 基本的控件 (按钮)
  3. 【升级版】如何使用阿里云云解析API实现动态域名解析,搭建私有服务器【含可执行文件和源码】...
  4. Opencv基础画图函数——line、circle、rectangle、Rect、ellipse、polylines、putText函数的用法
  5. 分布式 dynamips+dyangen (更新于07.3.30)
  6. 局部遮荫光伏matlab,一种基于随机蛙跳全局搜索算法的局部阴影光伏阵列MPPT控制的制作方法...
  7. 牛牛牛!干翻Sci-hub!
  8. 51单片机并行I/O口工作原理
  9. ZeroTier内网穿透工具配置
  10. 精心整理 | R语言中文社区历史文章合集(作者篇)
  11. python class类_学习python中的class类
  12. Is the docker daemon running问题解决方法
  13. [人工智能-深度学习-55]:循环神经网络 - 样本数据的几种编码方式:OneHot、ASCII、词向量word2vec
  14. RPC远程调用框架rsf和dubbo
  15. 吉林大学数据库系统原理期末复习笔记
  16. OpenGL ES 帧缓冲区位块传送(Blit)
  17. 解决谷歌浏览器拦截文件只有舍弃选项问题
  18. java反射 enum参数_CookBook/3-Java反射.md at master · Byron4j/CookBook · GitHub
  19. 20230419心情随记
  20. 单片机原理及应用 实验一 计数显示器

热门文章

  1. 《魔兽世界》怀旧服简单点评和一些被问到的问题的回答
  2. 前向型神经网络之BPNN(附源码)
  3. Android 3D游戏开发——Opengl ES游戏引擎实现
  4. linux应用商店下载的程序,利用抓包工具从Windows 10 应用商店里下载各种离线应用...
  5. 2015中学计算机考试题,2015初中艺术试题参考
  6. iPhone 字体显示效果大全
  7. 精准评价供应商,上个厕所就可以了
  8. 非主流自然语言处理——遗忘算法系列(六):语义模型
  9. 关于共射放大电路的阻容耦合方式下稳定工作点的输出电阻的疑问
  10. 【教程】如何申请Chrome应用商店(Web Store)开发者