MATLAB GUI制作快速入门
创建空白的GUI
在MATLAB命令行中输入guide
新建GUI,选择Blank GUI (Default),点击确定后就生成了一个空白的GUI制作界面,如下图所示
图1
制作GUI的具体过程
简单加法器
将可编辑文本拖入界面中
双击可编辑文本,在String栏中可以修改相应的文字,Tag栏是相当于给每个文本的一个标记,在后面的输入输出环节作用非常大。
将静态文本拖入界面中,双击它,同样可以在String栏中修改文本内容;同理,将按钮拖入界面中,修改其String为运行,它的作用相当于运行程序的开关。
点击菜单栏中的对齐对象,选中界面中的相应组件,调整布局得到如下结果
图2
前两个可编辑文本为输入,后一个为输出,选中运行,单击鼠标右键,选择查看回调里的Callback,在 pushbuttonX_Callback函数下编写如下语句(这里X表示你具体在运行的Tag中设置的是多少)
global a1;
global a2;
global a3;
a1 = str2double(get(handles.edit1,'String'));
a2 = str2double(get(handles.edit2,'String'));
a3 = a1 + a2;
set(handles.edit3,'String',a3);
1
2
3
4
5
6
7
在GUI界面中点击菜单栏的运行图形,在前两个可编辑文本中输入数据,点击运行,得到结果如下
图3
PS:
1、其实GUI制作并不复杂,理论上你编写的任何m程序都可以打包成一个GUI,只需要你解决输入参数以及结果输出的问题。
2、在编写程序时,发现在某个函数A下定义一个全局变量s,想在另一个函数B下使用它,必须在函数B下重新s为全局变量(下文将会继续提到)。
导入EXCEl数据
MATLAB是一款处理数据的利器,在实际过程中,可能需要向GUI中导入数据,下面将详细介绍:
需要导入的数据如图:
图4
将按钮拖入界面中,修改String为导入数据,选中它,单击鼠标右键→查看回调→Callback,在pushbuttonX_Callback函数中编写如下语句。
global sj;
[fname_od,pname_od] = uigetfile('.xlsx','请选择您想导入的数据’);
if fname_od == 0
return
end
str = fullfile(pname_od,fname_od);
[num,txt,sj] = xlsread(str);
%下面语句的作用是删除数据第一行
sj(1,:) = [];
sj = cell2mat(sj);
%导入进来的是一个元胞数组,需要转换成矩阵
1
2
3
4
5
6
7
8
9
10
11
上述代码中,可以根据自己的实际需求做出相应修改,如文件格式为xls,则在uigetfile中可将xlsx改为xls
GUI中显示上述数据
在GUI界面中拖入表,此时它的Tag应该是uitable1,选中它,单击鼠标右键→查看回调→CreateFcn
在uitableX_CreateFcn函数输入如下程序:
DATA = {0,0,0,0,0,0}
%表格的初始值
set(hObject,'ColumnName',{'语文','数学','英语','物理’,'化学’,'生物'},'data',DATA,...
'ColumnEditable',true);
%设置表格的栏目名
1
2
3
4
5
在GUI界面中,点击菜单栏中的运行图形,调整布局后,得到如图结果:
图5
选中运行按钮,点击鼠标右键→查看回调→Callback,继续在pushbuttonX_Callback函数下编写如下语句
global sj;
%此处就是上文中提到的再一次定义全局变量
set(handles.uitable1,'data',sj);
1
2
3
在GUI界面中,点击运行图形,在可编辑文本中输入数据,单击导入数据按钮,弹出的界面如图
图6
选择上述数据的EXCEL文件,再点击运行按钮,可以得到如下结果
图7
上面的步骤虽然只是讲述了如何将数据导入GUI,并通过GUI将原数据导出,但是通过上述方法,你可以对导入的数据进行相关处理后,根据实际的需要将结果输出。
弹出式菜单的简要介绍
下拉菜单是GUI中常见的组件,下面对其使用方法进行相关介绍
将弹出式菜单拖入GUI界面,双击它,在String栏中点击小正方形,在里面输入你需要的内容,如图
图8
选中弹出式菜单→查看回调→Callback,在popupmenuX_Callback函数中输入如下代码
global a4;
val = get(handles.popupmenu1,'value');
switch val
case 1
a4 = 0;
case 2
a4 = 5;
case 3
a4 = 9;
case 4
a4 = 15;
end
1
2
3
4
5
6
7
8
9
10
11
12
选中运行→查看回调→Callback,在 pushbuttonX_Callback函数下编写如下语句
global a1;
global a2;
global a3;
global a4;
a1 = str2double(get(handles.edit1,'String'));
a2 = str2double(get(handles.edit2,'String'));
a3 = a1 + a2 + a4;
set(handles.edit3,'String',a3);
global sj;
set(handles.uitable1,'data',sj);
1
2
3
4
5
6
7
8
9
10
11
12
在GUI菜单栏中点击运行图形,在下拉菜单中选择你所要的数据
在文本中输入数据,并按照上述过程导入你想要处理的数据,点击运行按钮,得到如下结果
图9
结束语
上述内容是自己在做项目的时候,查阅相关资料所总结出来的一些经验。由于能力有限,上述内容难免会有疏漏和错误,欢迎各位大佬批评指正。
---------------------
MATLAB GUI制作快速入门的更多相关文章
- python gui tkinter快速入门教程 | python tkinter tutorial
本文首发于个人博客https://kezunlin.me/post/d5c57f56/,欢迎阅读最新内容! python tkinter tutorial Guide main ui messageb ...
- Matlab GUI程序设计入门——信号发生器+时域分析
背景:学习matlab gui编程入门,完成一个基于GUIDE的图形化界面程序,结合信号生成及分析等. 操作步骤: 1.新建程序 新建一个GUIDE程序 这里选择第一个选项,即创建一个空白的GUIDE ...
- matlab快速入门
matlab快速入门 1矩阵 生成矩阵 % 直接法 a = [1,2,3;4,5,6;7,8,9]; % 冒号一维矩阵 a = 开始:步长:结束,步长为1可省略 b = 1:1:10; % 1,2 ...
- OpenStack云计算快速入门之二:OpenStack安装与配置
原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...
- [转载] 关于matlab GUI的一点心得
转载自 落落轻尘 [Fig文件方式,即使用菜单File->New->GUI来设计界面] 首先值得注意的是,在低版本matlab上制作的含GUI的m文件一般不能在高版本的matlab上面运行 ...
- Git 快速入门--Git 基础
Git 快速入门 Git 基础 那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 G ...
- [Qt Creator 快速入门] 第2章 Qt程序编译和源码详解
一.编写 Hello World Gui程序 Hello World程序就是让应用程序显示"Hello World"字符串.这是最简单的应用,但却包含了一个应用程序的基本要素,所以 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
随机推荐
- 【2017省中集训DAY1T1】 小X的质数
[题目链接] 点击打开链接 [算法] 如果一个数是小X喜欢的数,那么有两种可能: 1.这个数是质数 2.这个数除以它的最小质因子是一个质数 所以我们可以用线性筛+前缀和的方式预处理,询问的时候O(1) ...
- 6-12 SVM小结
介绍了SVM的概念以及如何利用SVM进行一个身高体重的训练和预测.如果类别比较简单的话,那么在二维空间上它有可能就是一条直线.如果类别比较复杂,那么投影到高维空间上它就是一个超平面.所以SVM的本质它 ...
- Codechef SEPT17
Codechef SEPT17 比赛链接:https://www.codechef.com/SEPT17 CHEFSUM code给定数组 a[1..n] ,求最小的下标 i ,使得 prefixsu ...
- Android Layout XML属性研究--android:layout_marginBottom (转载)
转自:http://blog.csdn.net/yanfangjin/article/details/7393023 在如下的xml配置文件中,起初对于android:layout_marginBot ...
- Win10应用设计的那些事儿
此文已由作者杨凯明授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 继Windows 10系统发布之后,很多Windows用户更新了系统.win10系统的发布,在以往的metr ...
- 洛谷 - P1118 - 数字三角形 - next_permutation
https://www.luogu.org/problemnew/show/P1118 next_permutation的第二个参数是最后一个元素的下一个元素,sort也是一样!有毒!这么低级的错误. ...
- (水题)洛谷 - P1014 - Cantor表
https://www.luogu.org/problemnew/show/P1014 很显然同一对角线的和是相等的.我们求出前缀和然后二分. 最后注意奇偶的顺序是相反的. #include<b ...
- Codeforces702A - Maximum Increase【尺取】
题意: 求一个连续的最长子序列长度: 思路: 没看仔细还wa1了-以为LIS- 然后写了尺取吧...= =太不仔细了.不过收获是LIS特么写挫了然后看了学长的blog<-点我- 题目的挫code ...
- jQuery笔记之工具方法—高级方法Ajax
$.ajxa() ——基本使用 前提:先了解js的执行机制 $.Callbacks()——回调 $.Deferred()——异步 $.when() 网络服务器链接由<渡一教育>提供 --- ...
- iSCSI 原理和基础使用
终于完成最后一篇了,一上午的时间就过去了. 下文主要是对基本操作和我对iSCSI的理解,网上有很多iSCSI原理,在这里我就不写了,请自行学习. 这篇文章仅对iSCSI的很多误解做一次梳理,你必须对所 ...