MATLAB-SIMULINK实用教程第6章图形用户界面(GUI)
利用Matlab的图形用户界面(GUI)功能,设计并实现实验主界面
(1)利用Matlab的图形用户界面(GUI)功能,设计并实现实验主界面;(2) 实现在“符号计算”图形用户界面中的各项符号计算功能,如实现Matlab的求极限、求导、求不定积分与定积分、级数求和、方程组的符号求解、常微分方程的符号求解等符号计算;(3) 利用Matlab的二维、三维绘图功能,实现图形用户界面(GUI)中的部分符号计算的可视化,即给出符号计算实例的同时实现该实例的图形化描述。
如下图给出了一个简单的GUI界面,学生可以参考如下图设计出自己的GUI界面。
程序如下:hf=figure('Position',[200,200,700,500],...'Name','信计08(2)班阿卜杜热黑木20080803417', ...'NumberTitle','off','MenuBar','none');uicontrol(hf,'Style','Frame','Position',[0,0.15,0.45,1],...'Units','normalized','Back',[0,1,1]);COMM1=['n=str2num(get(he1,''String''));', ...%求导连接'b=sym(get(he7,''String''));',...'dec=diff(b,n);', ...'set(he8,''string'',char(dec));'];COMM2=['a=str2num(get(he2,''String''));', ...%求极限连接'f=sym(get(he7,''String''));',...'lim=limit(f,a);', ...'set(he8,''string'',char(lim));'];COMM3=['g=sym(get(he7,''String''));',... %不定积分连接'int_1=int(g);', ...'set(he8,''string'',char(int_1));'];COMM4=['a=str2num(get(he3,''String''));', ... %级数求和连接'b=str2num(get(he5,''String''));', ...'f=sym(get(he7,''String''));',...'sum_1=symsum(f,a,b);', ...'set(he8,''string'',char(sum_1));'];COMM5=['a=str2num(get(he4,''String''));', ... %定积分连接'b=str2num(get(he6,''String''));', ...'f=sym(get(he7,''String''));',...'int_2=int(f,a,b);', ...'set(he8,''string'',char(int_2));'];COMM6=['f=get(he7,''String'');',...'dsolve_1=dsolve(f,''x'');', ...'set(he8,''string'',char(dsolve_1));'];COMM7=['f=get(he7,''String'');',...'ezplot(f);'];COMM8=['g=get(he8,''String'');',...'ezplot(g);'];uicontrol(hf,'Style','Push','Position',[0.02,0.9,0.11,0.06],...'String','求导','Units','normalized','Call',COMM1); uicontrol(hf,'Style','Text','Position',[0.17,0.85,0.08,0.1],...'Units','normalized','Horizontal','center',...'String','阶数','Back',[0,1,1]);he1=uicontrol(hf,'Style','Edit','Position',[0.25,0.9,0.15,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.72,0.13,0.06],...'String','求极限','Units','normalized','Call',COMM2);uicontrol(hf,'Style','Text','Position',[0.17,0.67,0.08,0.1],...'Units','normalized','Horizontal','center',...'String','极限点','Back',[0,1,1]);he2=uicontrol(hf,'Style','Edit','Position',[0.25,0.72,0.15,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.58,0.13,0.06],...'String','不定积分','Units','normalized','Call',COMM3);uicontrol(hf,'Style','Push','Position',[0.02,0.45,0.13,0.06],...'String','级数求和','Units','normalized','Call',COMM4);uicontrol(hf,'Style','Text','Position',[0.31,0.44,0.06,0.06],...'Units','normalized','Horizontal','center',...'String','上限','Back',[0,1,1]);he5=uicontrol(hf,'Style','Edit','Position',[0.38,0.45,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Text','Position',[0.17,0.44,0.06,0.06],...'Units','normalized','Horizontal','center',...'String','下限','Back',[0,1,1]);he3=uicontrol(hf,'Style','Edit','Position',[0.24,0.45,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.32,0.13,0.06],...'String','求定积分','Units','normalized','Call',COMM5);uicontrol(hf,'Style','Text','Position',[0.31,0.31,0.06,0.06],...'Units','normalized','Horizontal','center',...'String','上限','Back',[0,1,1]);he6=uicontrol(hf,'Style','Edit','Position',[0.38,0.32,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Text','Position',[0.17,0.3,0.08,0.06],...'Units','normalized','Horizontal','center',...'String','下限','Back',[0,1,1]);he4=uicontrol(hf,'Style','Edit','Position',[0.24,0.32,0.06,0.06],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Push','Position',[0.02,0.2,0.16,0.06],...'String','解微分方程','Units','normalized','Call',COMM6);uicontrol(hf,'Style','text','Position',[0.48,0.9,0.13,0.06],...'String','原函数','Units','normalized');he7=uicontrol(hf,'Style','edit','Position',[0.65,0.9,0.30,0.06],...'String','','Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','text','Position',[0.48,0.77,0.13,0.06],...'String','结果函数','Units','normalized');he8=uicontrol(hf,'Style','text','Position',[0.65,0.77,0.30,0.06],...'String','','Units','normalized','Back',[0,1,0]);h_axes=axes('position',[0.55,0.2,0.4,0.5]);uicontrol(hf,'Style','push','Position',[0.58,0.02,0.13,0.06],...'String','初始绘图','Units','normalized','call',COMM7);uicontrol(hf,'Style','push','Position',[0.80,0.02,0.13,0.06],...'String','结果绘图','Units','normalized','call',COMM8);uicontrol(hf,'Style','Push','Position',[0.02,0.02,0.08,0.06],...'String','退出','Units','normalized','Call', 'close');。
Matlab中的GUI设计和用户界面开发指南
Matlab中的GUI设计和用户界面开发指南引言在科学计算和数据可视化领域,Matlab是一种经常被使用的高级技术工具。
虽然Matlab主要以命令行界面为特点,但其GUI(Graphical User Interface)设计和用户界面开发方面的功能同样强大。
本文将介绍如何使用Matlab进行GUI设计和用户界面开发,并提供一些实用的指南。
一、GUI设计的重要性GUI设计是一种将复杂的计算方法和数据分析过程以直观的方式呈现给用户的技术。
优秀的GUI设计能够提升用户的工作效率,减少错误的发生,并增强用户对软件的使用体验。
在科学研究和工程应用中,GUI设计的重要性不言而喻。
二、Matlab中的GUI设计工具Matlab提供了一些有用的工具和函数用于GUI设计。
最常用的工具是GUIDE (Graphical User Interface Development Environment),它是Matlab的图形用户界面开发环境。
GUIDE允许用户通过可视化的方式创建和编辑GUI元素,如按钮、文本框、图形等。
此外,Matlab还提供了一些用于处理图形和交互的函数,如绘图函数、事件处理函数等。
三、GUI设计的基本原则在进行GUI设计时,有一些基本原则需要被遵循。
首先,界面应该简洁、直观和易于理解。
用户应该能够快速找到所需的功能,并在界面上进行直接操作。
其次,界面应该具有一致性,各个元素的布局和功能应该保持一致,避免给用户造成困惑。
最后,界面应该具有灵活性和可扩展性,方便用户进行个性化设置和定制。
四、实例:绘制曲线的GUI设计假设我们需要设计一个简单的GUI界面,用于绘制数学函数的曲线。
首先,我们可以使用GUIDE创建一个包含绘图区域、输入框和按钮的界面。
然后,我们需要编写一些事件处理函数,用于响应用户的操作。
一个基本的事件处理函数是“绘图”函数,它用于根据用户输入绘制曲线。
在该函数中,我们可以使用Matlab提供的绘图函数,如plot()、xlabel()和ylabel()等,来完成曲线的绘制和标注。
MATLAB_第6讲_GUI界面设计
25
6.2 控件对象及属性
1. GUI控件对象类型 Matlab中的控件大致可分为两种,一种为动作 控件,鼠标点击这些控件时会产生相应的响应。 一种为静态控件,是一种不产生响应的控件,如 静态文本框等。 控件对象是事件响应的图形界面对象。当某一 事件发生时,应用程序会做出响应并执行某些预 定的功能子程序(Callback).
11
1. 布局编辑器(Layout editor)
1) 将控件对象放置到布局区
用鼠标选择并放置控件到布局区内; 移动控件到适当的位置; 改变控件的大小; 选中多个对象的方法。
一 个 简 单 的 布 局 示 例
12
1. 布局编辑器(Layout editor)
2)激活图形窗口
点击 即可激活图形窗口,如所建立的布局还没有进 行存储,可用File菜单下的Save As菜单项(或工具栏中的 对应项),按输入的文件的名字,在激活图形窗口的同时 将存储一对同名的M文件和带有.fig扩展名的FIG文件。
27
1. GUI控件对象类型
5) 文本编辑器(Editable Texts):用来使用键盘输入字符串 的值,可以对编辑框中的内容进行编辑、删除和替换等 操作;
6) 静态文本框(Static Texts):仅用于显示单行的说明文字; 7) 滚动条(Slider): 可输入指定范围的数量值; 8) 组合板(Panel):在图形窗口中对控件分组组合; 9) 列表框(List Boxes):在其中定义一系列可供选择的字符串 10) 弹出式菜单(Popup Menus): 让用户从一列菜单项中选 择一项作为参数输入;
第6讲 MATLAB GUI界面设计
matlab中图形用户界面的教程
创建GUI应用程序
case 'Peaks' % User selects peaks handles.current_data = handles.peaks; case 'Membrane' % User selects membrane handles.current_data = handles.membrane; case 'Sinc' % User selects sinc handles.current_data = handles.sinc; end % Save the handles structure. guidata(hObject,handles) % Hints: contents = get(hObject,'String') returns data_pop_up contents as cell array % contents{get(hObject,'Value')} returns selected item from data_pop_up
GUI代码说明
– M 文件扩展名为 .m, 其中包含 GUI 的初始代 码及相关响应函数的模 板。用户需要在该文件 中添加响应函数的具体 内容。 – M 文件通常包含一个与 文件同名的主函数,各 个控件对应的响应函数, 这些响应函数为主函数 的子函数。其内容如表 所示。
内容 描述
注释
程序注释。当在命令行调用 help 时显 示
创建GUI应用程序
• 创建一个 GUI,实现三维图形绘制。 界面中应包含一个绘图区域; 一个面板,其中包含三个绘图按钮,分 别实现表面图、网格图和等值线的绘制; 一个弹出菜单,用以选择数据类型,并 且用静态文本进行说明。其草图如图所示。
MATLAB-SIMULINK实用教程第6章图形用户界面(GUI)
图6-8 菜单编辑器
6.5 小 结
熟悉如VB,VC,Java等面向对象编程的读 者在学习使用GUIDE创建GUI对象和标准菜单的 定制时,会发现它们之间的相似之处,因此上 手很容易,但如果要精通G′,则需要更加深 入的学习。 本章简要介绍了图形用户界面的使用,并 通过例子介绍GUI中最重要的三种方法。
第6章图形用户界面(GUI)
6.1 GUI对象层次结构 6.2 使用M文件创建GUI对象 6.3 使用GUIDE创建GUI对象 6.4 使用GUIDE创建自定义菜单 6.5 小 结
如果读者想向别人提供应用程序,想进行 某种技术、方法的演示,想制作一个供反复使 用且操作简单的专用工具,那么图形用户界面 (Graphical User Interfaces,GUI)是较 好的选择之一。
图6-1 GUI对象层次结构图
6.2 使用M文件创建GUI对象
本节将介绍如何使用M文件来创建简单的 GUI对象,并可以响应用户的键盘或鼠标操作。 【例6-1】 构造如图6-2所示的GUI对象, 要求单击June按钮时,在文本框显示June;单 击July按钮时,在文本框显示June,单击off 按钮时,off按钮显示为on;单击close按钮关 闭窗口。
图形用户界面通常是一种包含多种图形对 象的界面,典型的图形界面包括图形显示、功 能按钮控件以及用户自定义的功能菜单等。 为了让界面实现各种功能,用户需要对各 个图形对象进行布局和事件编程。 这样,当用户激活对应的GUI对象时,就 能执行相应的事件行为。
最后,必须保存和发布自己创建的GUI, 使得用户可以应用GUI对象。 本章通过几个例子介绍GUI中最重要的三 种方法:使用M文件创建GUI对象,使用GUIDE 创建GUI对象和标准菜单的定制。
MatlabGUI图形用户界面设计[1]
⑤ 布局编辑器的弹出菜单
在任一控件上按下鼠标右键,会弹出一个菜单,通过该菜单可以完成布局编辑器 的大部分操作。
2. 位置调整工具( ) 利用位置调整工具,可以对对象设计区内的多个对象的位置进行调整。
位置调整工具的打开方式有两种: ① 从设计窗口的工具栏上选择 命令按钮; ② 选择菜单下的 ...菜单项,就可以打开对象位置调整器。
菜单也可以通过编程实现, 方法为从设计窗口的工具栏上 选择 命令按钮,打开菜单编 辑程序。
菜单编辑器包括菜单的设计和编辑,菜单编辑器有八个快捷键,可以利用它们任意添加或 删除菜单,可以设置菜单项的属性,包括名称()、标识()、选择是否显示分隔线( )、是否在菜单 前加上选中标记( )、调用函数()。
选择菜单下的 菜单项;
在命令窗口中输入; 在控件对象上单击鼠标右键,选择弹出菜单的 菜单项。
② 使用属性查看器( )
布置控件; 定义文本框的属性; 定义坐标轴的属性; 定义按钮的属性; 定义复选框。
4. 菜单编辑器( )
利用菜单编辑器,可以创建、设置、修改下拉式菜单和快捷菜单。选择 菜单下的 ...子菜单, 即可打开菜单编辑器。
菜单编辑器( )——创建、设计、修改下拉式菜单和快捷菜单;
顺序编辑器( )——用于设置当用户按下键盘上的键时,对象被选中的先后顺序。
在 5中, 的设计是以 M文件的编程形式实现的,的布局代码存储在M文件和文件中,而在 6中有了很大的改变, 6将的布局代码存储在 文件中,同时还产生一个M文件用于存储调用函 数,在M文件中不再包含的布局代码,在开发应用程序时代码量大大减少。
为设计一共准备了4种模板,分别是: ()(空白模板,默认); (带控件对象的模板); (带坐标轴与菜单的模板); (带模式问题对话框的模板)。
电力系统的MATLABSIMULINK仿真与应用第6章
第6章 电力系统稳态与暂态仿真
6.1.5 LTI视窗
打开“LTI视窗”窗口如图6-6所示。该窗口中含有以下 内容: (1) “系统输入”(System inputs)列表框:列出电路状态 空间模型中的输入变量,选择需要用到LTI视窗的输入变量。 (2) “系统输出”(System outputs)列表框:列出电路状态 空间模型中的输出变量,选择需要用到LTI视窗的输出变量。 (3) “打开新的LTI视窗”(Open New LTI Viewer)按键: 产生状态空间模型并打开选中的输入和输出变量的LTI视窗。 (4) “打开当前LTI视窗”(Open in current LTI Viewer)按 键:产生状态空间模型并将选中的输入和输出变量叠加到当
(2) 改变仿真初始状态; (3) 进行潮流计算并对包含三相电机的电路进行初始化
设置;
(4) 显示阻抗的依频特性图;
第6章 电力系统稳态与暂态仿真
(5) 显示FFT分析结果;
(6) 生成状态—空间模型并打开“线性时不变系 统”(LTI)时域和频域的视窗界面; (7) 生成报表,该报表中包含测量模块、电源、非线性 模块和电路状态变量的稳态值,并以后缀名.rep保存; (8) 设计饱和变压器模块的磁滞特性。 6.1.1 主窗口功能简介 MATLAB提供的Powergui模块在SimPowerSystems库中, 图标如图6-1所示。
第6章 电力系统稳态口
第6章 电力系统稳态与暂态仿真
(3) “节点类型”(Bus type)下拉框:选择节点类型。对
于“PV节点”(P&V Generator),可以设置电机的端口电压 和有功功率;对于“PQ节点”(P&Q Generator),可以设置 电机的有功和无功功率;对于“平衡节点”(Swing Bus), 可以设置终端电压UAN的有效值和相角,同时需要对有功 功率进行预估。 如果选择了非同步电机模块,则仅需要输入电机的机械 功率;如果选择了三相动态负荷模块,则需要设置该负荷消 耗的有功和无功功率。 (4) “终端电压UAB”(Terminal voltage UAB)文本框:对 选中电机的输出线电压进行设置(单位:V)。
MATLABGUI的使用经验与技巧
MATLABGUI的使用经验与技巧
一、Matlab介绍
Matlab是一款由MathWorks公司推出的矩阵/数组工具软件,具有高
效的数学计算和可视化功能。
可以为科学计算和工程建模提供便捷的处理
方式,是一款多功能软件。
Matlab GUI(图形用户界面)是一种软件界面,使用户能够即时地与Matlab应用程序进行交互。
二、Matlab GUI的使用经验及技巧
1、UI组件:
Matlab GUI的UI组件是构建GUI的基础,主要有按钮、复选框、单
选框、输入框、列表框等,可以根据实际需求添加不同的UI组件,并且
可以定义UI组件的属性,如按钮的背景色、位置等。
2、回调函数:
Matlab GUI的回调函数是比较重要的一个组成部分,当用户激活一
些UI组件时,会触发回调函数,实现用户与程序的交互,从而实现各种
操作和功能。
回调函数中可以定义各种语句,调用函数,甚至可以执行程
序段,实现复杂功能。
3、数据处理:
Matlab GUI通过一定的语句,即可实现用户的数据输入、输出、处
理及其他操作,从而达到一定的功能要求。
可以在GUI中运行matlab程序,处理复杂的数据,这需要熟练掌握Matlab语言,以及其他数据处理
技术,例如正则表达式等。
4、可视化:
可视化是GUI最重要的功能之一,可以使用各种图表或实时显示数据,让用户更直观地查看和理解数据。
利用Matlab的图形用户界面(GUI)功能,设计与实现实验.
(1 利用Matlab 的图形用户界面(GUI )功能,设计与实现实验主界面;(2 实现在“数值计算”图形用户界面中的各项数值计算,如实现Matlab 的线性方程组的求解、数据统计与分析、数值插值、曲线拟合、常微分方程的数值求解等数值计算;(3 利用Matlab 的二维、三维绘图功能,实现图形用户界面(GUI )中的数值计算的可视化,即给出数值计算实例的同时实现该实例的图形化描述。
如下图给出了一个简单的GUI 界面,学生可以参考如下图设计出自己的GUI 界面。
figure('Color' ,[1,1,1],'Position' ,[100,100,700,600],...'Name' , '' , ...'NumberTitle' , 'off' , 'MenuBar' , 'none' ;uicontrol('Style' , 'Frame' , 'Position' ,[0,0.08,0.45,1],...'Units' , 'normalized' , 'Back' ,[0,1,1];XIANQIU=['a=str2num(get(xishu,''String'';', ...'b=str2num(get(changshu,''String'';', ...'b=b'';x=a\b;', ...'set(jieguo,''string'',x;'];uicontrol('Style' , 'Push' , 'Position' ,[0.02,0.92,0.20,0.06],...'String' , 'ÏßÐÔ·½³Ì×éÇó½â', 'Units' , 'normalized' , 'Call' ,XIANQIU;uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.83,0.1,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'ϵÊý¾ØÕó', 'Back' ,[0,1,1];xishu=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.83,0.25,0.06],... 'Units' ,'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.72,0.1,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , '³£ÊýÏî¾ØÕó', 'Back' ,[0,1,1];changshu=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.72,0.25,0.06],.. .'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Push' , 'Position' ,[0.02,0.63,0.20,0.06],... 'String' ,'Êýֵͳ¼ÆÓë·ÖÎö';uicontrol('Style' , 'Text' , 'Position' ,[0.23,0.63,0.2,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'ÔÚϵÊý¾ØÕóÊäÈë¿òÖÐÊäÈëÒª·ÖÎöµÄ¾ØÕó', 'Back' ,[0,1,1];uicontrol('Style' , 'Push' , 'Position' ,[0.06,0.55,0.1,0.05],... 'String' , 'ÊýÖµ²åÖµ';uicontrol('Style' , 'Push' , 'Position' ,[0.22,0.55,0.1,0.05],... 'String' , 'ÇúÏßÄâºÏ';uicontrol('Style' , 'Text' , 'Position' ,[0.005,0.45,0.05,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'X' , 'Back' ,[0,1,1];chazhi=uicontrol('Style' , 'Edit' , 'Position' ,[0.05,0.45,0.15,0.06],... 'Units' ,'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.2,0.45,0.05,0.05],... 'Units' , 'normalized' , 'Horizontal' , 'center' , ...'String' , 'Y' , 'Back' ,[0,1,1];nihe=uicontrol('Style' , 'Edit' , 'Position' ,[0.25,0.45,0.15,0.06],... 'Units' ,'normalized' , 'Back' ,[0,1,0];XIANXING=['s=(get(changwei,''String'';', ...'c=(get(tiaojian,''String'';', ...'c_f=dsolve(''s'',''b'',''x'';', ...'set(jieguo,''string'',char(c_f;'];uicontrol('Style' , 'Push' , 'Position' ,[0.02,0.35,0.25,0.06],...'String' , '³£Î¢·Ö·½³ÌÊýÖµÇó½â', 'Units' , 'normalized' , 'Call' ,XIANXING;chengwei=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.25,0.25,0.06],.. .'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.25,0.1,0.05],... 'Units' , 'normalized' ,'Horizontal' , 'center' , ...'String' , '΢·Ö·½³Ì', 'Back' ,[0,1,1];tiaojian=uicontrol('Style' , 'Edit' , 'Position' ,[0.16,0.15,0.25,0.06],.. .'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.01,0.15,0.1,0.05],... 'Units' , 'normalized' ,'Horizontal' , 'center' , ...'String' , '³õÖµÌõ¼þ', 'Back' ,[0,1,1];h_axes=axes('position' ,[0.5,0.15,0.4,0.4];jieguo=uicontrol('Style' , 'text' , 'Position' ,[0.5,0.6,0.45,0.25],... 'Units' , 'normalized' , 'Back' ,[0,1,0];uicontrol('Style' , 'Text' , 'Position' ,[0.6,0.85,0.3,0.1],... 'Units' , 'normalized' ,'Horizontal' , 'center' , ...'String' , '½á¹û', 'Back' ,[1,1,1],'FontSize' ,35;uicontrol('Style' , 'Push' , 'Position' ,[0.018,0.02,0.08,0.05],... 'String' , 'Í˳ö', 'Units' , 'normalized' , 'Call' , 'close' ;uicontrol('Style' , 'Push' , 'Position' ,[0.65,0.025,0.08,0.05],...'String' , '°¡Êµ´òʵ', 'Units' , 'normalized' , 'Call' , '»æͼº¯Êý°´Å¥';。
第6章 Matlab GUI设计与封装发布
2013/10/22
©
谢中华, MATLAB应用培训.
图形用户界面设计
第四节 程序的封装发布
2013/10/22
©
谢中华, MATLAB应用培训.
一、MATLAB支持的编译器
MATLAB MATLAB Compiler Compiler Version For MEX-file compilation and external usage of MATLAB Engine and MAT-file APIs For C and C++ shared libraries MATLAB Builder EX For all features MATLAB Builder NE For all features
图形用户界面设计
2013/10/22
©
谢中华, MATLAB应用培训.
图形用户界面设计
【例6.2-1】制作简单GUI界面,实现单击按钮绘图。
function GUIExamp2 %简易绘图演示界面 % CopyRight:xiezhh(谢中华) fig = figure('units','normalized',... 'position',[0.2 0.2 0.6 0.6],... 'menubar','none',... 'name','简易绘图演示界面',... 'numbertitle','off',... 'color',[0.925 0.914 0.847],... 'tag','PlotTest'); axes('pos',[0.1 0.2 0.8 0.7],'tag','axes1'); uicontrol('style','push',... 'units','normalized',... 'pos',[0.65 0.05 0.1 0.08], ... 'fontsize',12,... 'fontweight','bold',... 'string','绘 图',... 'tag','PlotButton',... 'callback',... ['x = 0:0.05:2*pi;'... 'y = sin(x);'... 'plot(x,y);']); uicontrol('style','push',... 'units','normalized',... 'pos',[0.8 0.05 0.1 0.08], ... 'fontsize',12,... 'fontweight','bold',... 'string','擦 除',... 'tag','ClearButton',... 'callback','cla;');
经典MATLAB图形用户界面设计
使用场景
按钮适用于需要用户进行选择或确认的操作, 例如开始、停止、重置等。
属性设置
可以设置按钮的文本、大小、位置、样式等 属性。
事件处理
当用户点击按钮时,会触发相应的事件,可 以通过编写回调函数来处理该事件文本信息。
属性设置
可以设置文本框的长度、宽度、字体、颜色等属性。
事件处理
当用户滑动滑块时,会触发相应的事件,可以通过编写回调函数来处理该事件。
下拉菜单
功能描述
下拉菜单用于显示多个选项供用户选择。
属性设置
可以设置下拉菜单的选项、默认选项 等属性。
使用场景
适用于需要提供多个选项供用户选择 的场景,如文件打开、保存等。
事件处理
当用户选择下拉菜单中的某个选项时, 会触发相应的事件,可以通过编写回 调函数来处理该事件。
添加事件处理函数
为每个按钮添加事件处 理函数,实现点击按钮 后执行相应的计算操作。
显示结果
在GUI界面上添加一个文 本框,用于显示计算结 果。
保存和运行
保存GUI文件,并运行程 序,测试计算器功能是 否正常。
设计一个数据可视化GUI
加载和预处理数据
使用Matlab的函数加载数据, 并进行必要的预处理。
表格
功能描述
表格用于显示和编辑二维数 据表格。
使用场景
适用于需要展示和编辑大量 数据的场景,如数据统计、 数据分析等。
属性设置
事件处理
可以设置表格的行数、列数、 单元格内容、样式等属性。
当用户编辑表格中的数据时, 会触发相应的事件,可以通 过编写回调函数来处理该事 件。
04
高级GUI设计技巧
使用布局管理器
化的界面设计和代码生成功 能。
MATLABGUI设计过程
MATLABGUI设计过程MATLAB是一种强大的数学软件,其中的GUI(Graphical User Interface,图形用户界面)设计功能可以帮助用户创建自定义的交互式界面。
下面是一个详细的MATLAB GUI设计过程,内容包括准备工作、界面设计、添加功能和调试。
1.准备工作在开始界面设计之前,需要进行一些准备工作。
首先,确保已经安装了MATLAB软件,并且具备一定的MATLAB编程基础。
其次,要确定GUI的功能需求和设计目标。
考虑以下问题:-GUI的用途是什么?是展示数据、执行计算、控制硬件还是其他功能?-GUI将包含哪些元素,例如按钮、文本框、菜单等?-GUI的布局和样式是什么样的?是否需要添加背景图片或自定义的颜色方案?2.界面设计根据需求和设计目标,开始设计GUI界面。
可以使用MATLAB提供的“GUIDE(GUI Development Environment)”工具来进行界面设计,或者直接通过编程创建GUI界面。
- 使用GUIDE工具:打开MATLAB软件,点击主页上的“新建”按钮,然后选择“GUI(Graphical User Interface)Builder”选项。
GUIDE工具将提供一个可视化的界面,用户可以通过拖放和调整控件来设计GUI界面。
- 编程设计:在MATLAB命令窗口中使用编程方式设计GUI界面。
可以使用MATLAB提供的图形库函数,如figure、uicontrol等来创建界面元素,并设置其属性,例如位置、尺寸、颜色等。
3.添加功能一旦GUI界面设计完成,就可以开始为界面添加功能。
根据GUI的需求,选择合适的MATLAB功能函数进行调用,实现相应的操作。
-响应控件事件:为按钮、菜单等控件添加回调函数,并在函数中编写相应的操作代码。
例如,为按钮添加点击事件处理函数,实现按钮被点击时的操作。
-数据处理和计算:如果GUI需要进行数据处理或执行复杂的计算,可以在回调函数中编写相应的代码。
MATLAB_第6讲_GUI界面设计
MATLAB_第6讲_GUI界面设计GUI(Graphical User Interface)是指图形用户界面,是一种通过图形化方式与计算机程序进行交互的界面方式。
MATLAB提供了强大的GUI设计工具,使用户可以方便地创建各种交互式界面。
在MATLAB中,可以使用GUIDE(GUI Development Environment)工具来创建GUI界面。
GUIDE工具提供了可视化的界面设计器,可以通过拖拽和调整控件的位置、大小和属性来设计界面。
GUI界面的设计通常包括两个主要的步骤:界面的布局和界面的回调函数的编写。
首先是界面的布局,可以通过在GUIDE工具中添加各种控件来设计界面的布局。
常见的控件包括按钮、文本框、复选框、单选按钮、滑动条等。
可以使用GUIDE工具提供的布局管理器来帮助快速设计界面。
布局管理器可以帮助控件在窗口缩放时自动调整位置和大小,以适应不同大小的窗口。
在设计界面时,还可以设置每个控件的属性,例如文本框的初始文本、按钮的颜色、滑动条的范围等。
还可以为控件添加回调函数,以实现控件的响应操作。
回调函数可以是MATLAB脚本文件或匿名函数,用于处理控件的事件,例如按钮的点击事件、滑动条值的改变等。
接下来是界面的回调函数的编写。
当用户与界面上的控件进行交互时,会触发控件的相应事件,从而调用对应的回调函数。
回调函数可以进行各种操作,例如读取用户输入的数据、进行运算、更新界面上的显示等。
编写回调函数时,可以使用MATLAB提供的丰富的函数库和工具箱来完成各种操作。
例如,可以使用MATLAB内置的数据分析函数来处理用户输入的数据,使用图形绘制函数来展示计算结果,使用文件操作函数来读取和保存数据等。
在编写回调函数时,还可以使用MATLAB的错误处理机制来增加程序的稳定性。
可以使用try-catch结构来捕获可能出错的代码块,并在出错时进行相应的处理,例如弹出错误提示框、记录错误日志等。
通过GUI界面,用户可以通过直观的操作方式与MATLAB程序进行交互,使得使用MATLAB更加方便和灵活。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图6-4 使用GUIDE创建GUI对象图
1. 启动GUIDE
图6-控件对象的布局和属性设置
3. 编写相应的程序代码 4. 生成Fig文件和M文件
6.4 使用GUIDE创建自定义菜单
在GUI控件对象中,界面菜单(uimenu) 是一个重要的组成部分。 用户可以根据需要在GUI对象中创建标准 菜单,自行设置菜单或创建现场菜单等,同时 可以设置菜单控件的各种属性。
6.1 GUI对象层次结构
图形对象不仅包括 uimenu 和 uicontrol 对 象,而且还包括图形、坐标轴和它们的子对象。 让我们从另一个角度来看这一层次结构, 计算机的屏幕本身是根结点,图形是根对象的 子对象,角坐标轴、 uimenu 和 uicontrol 是图 形的子对象。
根可以包括多个图形,每个图形含有一组 或多组坐标轴以及其子对象,每个图形也可以 有 一 个 或 多 个 与 坐 标 轴 无 关 的 uimenu 和 uicontrol,如图6-1所示。 虽然uicontrol对象无子对象结点,但他们 确实具有多种类型。 uimenu 对象常将其他的 uimenu 对象作为 其子对象。 表 6-1 所示给出了 Uimenu 对象的属性及 其意义。
图6-1 GUI对象层次结构图
6.2 使用M文件创建GUI对象
本节将介绍如何使用M文件来创建简单的 GUI对象,并可以响应用户的键盘或鼠标操作。 【例6-1】 构造如图6-2所示的GUI对象, 要求单击June按钮时,在文本框显示June;单 击July按钮时,在文本框显示June,单击off 按钮时,off按钮显示为on;单击close按钮关 闭窗口。
图形用户界面通常是一种包含多种图形对 象的界面,典型的图形界面包括图形显示、功 能按钮控件以及用户自定义的功能菜单等。 为了让界面实现各种功能,用户需要对各 个图形对象进行布局和事件编程。 这样,当用户激活对应的GUI对象时,就 能执行相应的事件行为。
最后,必须保存和发布自己创建的GUI, 使得用户可以应用GUI对象。 本章通过几个例子介绍GUI中最重要的三 种方法:使用M文件创建GUI对象,使用GUIDE 创建GUI对象和标准菜单的定制。
第6章图形用户界面(GUI)
6.1 GUI对象层次结构 6.2 使用M文件创建GUI对象 6.3 使用GUIDE创建GUI对象 6.4 使用GUIDE创建自定义菜单 6.5 小 结
如果读者想向别人提供应用程序,想进行 某种技术、方法的演示,想制作一个供反复使 用且操作简单的专用工具,那么图形用户界面 (Graphical User Interfaces,GUI)是较 好的选择之一。
图6-8 菜单编辑器
6.5 小 结
熟悉如VB,VC,Java等面向对象编程的读 者在学习使用GUIDE创建GUI对象和标准菜单的 定制时,会发现它们之间的相似之处,因此上 手很容易,但如果要精通G′,则需要更加深 入的学习。 本章简要介绍了图形用户界面的使用,并 通过例子介绍GUI中最重要的三种方法。
图6-2 使用M文件创建带有按钮和 文本框的GUI对象图
【例6-2】 构造如图6-3所示的GUI对象, 当在坐标轴范围内单击鼠标左键,会在相应位 置产生“*”号。
图6-3 使用M文件创建鼠标响应的GUI对象图
6.3 使用GUIDE创建GUI对象
MATLAB图形用户界面开发环境(GUIDE) 提供了多种设计模板,用户可以轻松地定制属 于自己的GUI对象,同时自动生成M文件框架, 并用该框架编写自己的函数代码。 【例6-3】 使用GUIDE来定制如图6-4所 示的GUI对象界面,使用M文件来编写相应的 事件程序,完成整个创建工作。