目录
[1.1 坐标区+普通按钮](#1.1 坐标区+普通按钮)
[1.1.1 对齐组件](#1.1.1 对齐组件)
[1.1.2 按钮属性](#1.1.2 按钮属性)
[1.1.3 脚本说明](#1.1.3 脚本说明)
[1.1.4 选择呈现](#1.1.4 选择呈现)
[1.3 编译GUI程序](#1.3 编译GUI程序)
在以前的时候,我们的电脑还是这样的
![](https://file.jishuzhan.net/article/1697542734899843074/7b6369821cd846f3b8e344f6570c0f22.png)
随着科技的不断进步,我们的电脑也发生着翻天覆地的改变1990s:
![](https://file.jishuzhan.net/article/1697542734899843074/3ee35f5017204c0795499ecff4c58888.png)
在未来,我们的电脑可能是这样的:
![](https://file.jishuzhan.net/article/1697542734899843074/7d3d005692ec48fe9225e3043ab732e5.png)
今天我们来学习的Matlab的图形化界面的使用!!!
1.MatlabGUI
Matlab
guide%图形化界面
![](https://file.jishuzhan.net/article/1697542734899843074/1e8391789a314acdb0d645f6f9273c93.png)
然后我们就来到我们图形化界面
![](https://file.jishuzhan.net/article/1697542734899843074/0e60540d77b64a919db8d47edc8cbf0b.png)
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------|
| 按钮(Push Button) | 按下按钮时会产生一个动作 |
| 滑块(Slider) | 通过允许用户移动滑动条,滑块接收指定范围内的数字输入 |
| 单选按钮(Radio Button) | 单选按钮与复选框类似,但在一组相关单选按钮中,单选按钮通常是互斥的 |
| 复选框(Check Box) | 复选框在选中时可以产生操作,并指示其状态为选中或未选中 |
| 编辑文本(Edit Text) | 编辑文本组件是允许用户输入或修改文本字符串的字段,当需要文本作为输入时,请使用编辑文本 |
| 静态文本(Static Text) | 静态文本组件显示本文本行 |
| 弹出菜单(Pop-Up Menu) | 弹出菜单打开,当用户单击箭头时显示一个选项列表 |
| 列表框(List Box) | 列表框显示项目列表,并允许用户选择一个或者多个项目 |
| 切换按钮(Toggle Button) | 切换按钮生成一个操作,并指示它们是打开还是关闭 |
| 桌子(Table) | 使用表格按钮创建表格组件 |
| 轴(Axes) | 可以显示图形 |
1.1 坐标区+普通按钮
![](https://file.jishuzhan.net/article/1697542734899843074/d35e852dcbf749d2a95c204e440fd65c.png)
![](https://file.jishuzhan.net/article/1697542734899843074/7bee6f482caa40399d447ed61f8a0471.png)
![](https://file.jishuzhan.net/article/1697542734899843074/1c616faa343d4458b2c59253ed6262c5.png)
1.1.1 对齐组件
看到右边的我们的小按钮的位置不太美观,我们应该怎么做才可以将它们的位置进行改变呢?
![](https://file.jishuzhan.net/article/1697542734899843074/2d5455c0cf354ac9af0ff2ada6e56410.png)
![](https://file.jishuzhan.net/article/1697542734899843074/1c267da59b004e4dbae5b646a82b1c11.png)
结果:
![](https://file.jishuzhan.net/article/1697542734899843074/157fe81348644b40bc96cccf27821bb7.png)
1.1.2 按钮属性
![](https://file.jishuzhan.net/article/1697542734899843074/48fe50efbd3f4d2b8a0a4aad4e7e00c7.png)
一个Object总会有一个唯一的id,我们在属性中可以找到
![](https://file.jishuzhan.net/article/1697542734899843074/695b9ee960514d039a8c35599505ad04.png)
我们可以通过修改属性值,达到我们预期的效果:
![](https://file.jishuzhan.net/article/1697542734899843074/e87a828662b24e26b89b85fb9df68403.png)
1.1.3 脚本说明
![](https://file.jishuzhan.net/article/1697542734899843074/f575fbf28dd149abbdd28b2a46c6b57c.png)
每个按钮对应一个脚本,如果想给对应按钮加事件,就必须要在对应的脚本函数中编写代码
![](https://file.jishuzhan.net/article/1697542734899843074/26b6732718464bc9981d5702be274a85.png)
我们现在主页面中添加代码,看看会发生什么情况?
Matlab
handles.peaks=peaks(35);
handles.membrane=membrane;
[x,y] = meshgrid(-8:.5:8);
r = sqrt(x.^2+y.^2) + eps;
sinc = sin(r)./r;
handles.sinc = sinc;
handles.current_data = handles.peaks;
surf(handles.current_data)
![](https://file.jishuzhan.net/article/1697542734899843074/3c08d87eb8b141f089a5f03db230d77d.png)
我们将脚本保存之后,我们的GUI界面就会发生改变,但是我们的预期是当我们点击button1按钮后,这个图片才被允许出现,这不符合我们的预期
![](https://file.jishuzhan.net/article/1697542734899843074/30878875e8ab4093a0e04729d6679a6a.png)
![](https://file.jishuzhan.net/article/1697542734899843074/dcd79d66cc6c460c9cbb0ec6de838c04.png)
我们再次点击button1按钮看是不是和我们预期的一样
![](https://file.jishuzhan.net/article/1697542734899843074/b7a10ec21a3c4b11b6a884d53fa8cb50.png)
1.1.4 选择呈现
![](https://file.jishuzhan.net/article/1697542734899843074/d19d5001cc594e5fb6ab5b118b0945b3.png)
我们想在新增加的图像中显示,我们首先找到
![](https://file.jishuzhan.net/article/1697542734899843074/b274d34bd61a4fbca87dbbaae1e1a2b1.png)
在我们button1按钮的脚本中修改代码,指定呈现的Object
Matlab
surf(handles.axes2,handles.current_data)
%或者是
axes(handles.axes2);
surf(handles.current_data);
![](https://file.jishuzhan.net/article/1697542734899843074/90456e9ac21a4ce7a6592b8751ddca08.png)
1.2 滑动条+静态文本
![](https://file.jishuzhan.net/article/1697542734899843074/31952f34237e4ff5bd220d906b6942a1.png)
![](https://file.jishuzhan.net/article/1697542734899843074/a44c631936ee4f98beb3d0b6f3764207.png)
拉的时候,上面的文本框并没有发生改变,因为我们还没有将两个Object的关联起来
Matlab
a = get(handles.slider2, 'Value');
set(handles.text2, 'String', 'TEST');
![](https://file.jishuzhan.net/article/1697542734899843074/80664b74e9d04efab5ae60c4e67bdfef.png)
![](https://file.jishuzhan.net/article/1697542734899843074/3480532e92f4437e91da3917e4658d7c.png)
![](https://file.jishuzhan.net/article/1697542734899843074/9caa6136a59249cc996ed3b651caf60c.png)
![](https://file.jishuzhan.net/article/1697542734899843074/04d9f06f00a34cc781bc830e00412dbd.png)
![](https://file.jishuzhan.net/article/1697542734899843074/c311e8b189ff4cc4aeda1945c971035f.png)
![](https://file.jishuzhan.net/article/1697542734899843074/c221f7cdcb284f8588bfcd2206408737.png)
1.3 编译GUI程序
在我们电脑中可以运行对应的程序,但是换个电脑,这些程序未必可以运行的起来,所以这就是我们通过将其进行编译
Matlab
deploytool
![](https://file.jishuzhan.net/article/1697542734899843074/258ec13f57eb479c9f4bced6d991f7be.png)
![](https://file.jishuzhan.net/article/1697542734899843074/1bd454ccbe0c43b18c806a8e599faa7e.png)
![](https://file.jishuzhan.net/article/1697542734899843074/51c41c11487740a794cf549cf73d109b.png)
等待即可
![](https://file.jishuzhan.net/article/1697542734899843074/f5f265bc25ce4a7fb6051c0fb4136afc.png)
![](https://file.jishuzhan.net/article/1697542734899843074/c4c903c633654b47b356ba37c5962cfc.png)
![](https://file.jishuzhan.net/article/1697542734899843074/5bea2720cb61402eae5344d58f87ed03.png)
![](https://file.jishuzhan.net/article/1697542734899843074/ce36a20ca310412aaf3c7f0b75dfffcc.png)