MATLAB编程-简介
注意事项:关于 GUIDE 的未来支持
在 MATLAB R2019b 版本中,MathWorks 宣布 GUIDE(图形用户界面设计环境)将在未来版本中被移除。需要注意的是,现有的 GUIDE 应用在 GUIDE 被移除后仍然可以运行,但将无法通过 GUIDE 环境进行编辑。
什么是 GUIDE?
GUIDE(Graphical User Interface Development Environment)是 MATLAB 提供的用于图形用户界面开发的工具箱,适用于高级 MATLAB 程序员。通过 GUI,可以将命令行程序封装为可视化界面,使非编程用户也可以轻松使用程序。
使用 GUIDE 通常包含两个主要流程:
-
布局 GUI(Lay out the GUI)
-
编程 GUI(Program the GUI)
创建空白 GUI
要开始使用 GUIDE,只需在 MATLAB 命令窗口中输入:
guide
你将看到 GUIDE 的主界面:
MATLAB GUIDE GUI 主菜单
我们将创建一个简单的 GUI 示例:该界面接受两个数作为输入,相加后将结果显示在第三个文本框中。虽然很简单,但可以说明 GUI 是如何在几分钟内创建的。
点击 Blank GUI (Default) 创建一个空白界面。
放置组件与修改属性
你会看到一个网格状画布,同时 GUIDE 的常用控件列在左侧。以下是常用组件及其简要说明:
组件 | 说明 |
---|---|
Push Button(按钮) | 鼠标点击后激活 |
Slider(滑块) | 拖动滑块以改变值 |
Radio Button(单选按钮) | 单选状态切换 |
Tick Box(复选框) | 勾选/取消勾选 |
Edit Text(可编辑文本框) | 用户输入文本 |
Static Text(静态文本) | 标签或结果显示 |
Popup Menu(下拉菜单) | 显示可选项菜单 |
List Box(列表框) | 可滚动并可多选的列表 |
Toggle Button(切换按钮) | 按下后保持状态 |
Table(表格) | 显示数据表格 |
Axes(坐标轴) | 用于 2D/3D 绘图 |
Panel(面板) | 对控件进行视觉分组 |
Button Group(按钮组) | 将多个单选或切换按钮作为一组使用 |
ActiveX 控件 | 不适用(N/A) |
你可以通过拖拽将控件放置在画布上,例如放置 Static Text、Edit Text 和 Push Button。
默认 Edit Text 显示 “Edit Text”,Push Button 显示 “Push Button”。你可以通过双击组件打开属性检查器(Property Inspector),找到 String
属性并修改其文本。对于按钮,可改为 “Add”;对于输入框,可将默认文本删除。

使用 handles 编程
GUI 布局完成后,我们开始编写其逻辑功能:
-
从
Num_A
输入框中获取数值; -
从
Num_B
输入框中获取数值; -
将两数相加;
-
将结果写入第三个输入框。
实现上述功能需要使用 get
和 set
命令:
var = get(handles.组件Tag名, 'String');
set(handles.组件Tag名, 'String', 变量值);
编写回调函数(Callback)
回调函数是在用户进行某种操作(如点击按钮)时自动执行的函数。回调是 GUI 编程的核心部分。
比如我们为按钮 Add 编写如下回调:
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
n1 = get(handles.edit1,'string'); % 获取第一个文本框的内容
n2 = get(handles.edit2,'string'); % 获取第二个文本框的内容
S = str2double(n1) + str2double(n2); % 执行加法
set(handles.edit3,'string',num2str(S)) % 显示结果到第三个文本框
这段代码中使用 str2double
将字符串转换为数值,再用 num2str
转为字符串显示。
更复杂的 GUI 示例
我们可以在加法的基础上添加减法、乘法、除法:
-
再添加 3 个 Push Button;
-
双击每个按钮,修改
String
属性为 SUB、MUL、DIV; -
修改
Tag
为 sub_button、mul_button、div_button,更易识别; -
通过按钮对齐工具 Align Object 整齐排列按钮和输入框;
-
每个按钮编写回调函数如下:
% --- Subtraction
function sub_button_Callback(hObject, eventdata, handles)
n1 = get(handles.edit1,'string');
n2 = get(handles.edit2,'string');
S = str2double(n1) - str2double(n2);
set(handles.edit3,'String',num2str(S))
% --- Multiplication
function mul_button_Callback(hObject, eventdata, handles)
n1 = get(handles.edit1,'string');
n2 = get(handles.edit2,'string');
S = str2double(n1) * str2double(n2);
set(handles.edit3,'String',num2str(S))
% --- Division
function div_button_Callback(hObject, eventdata, handles)
n1 = get(handles.edit1,'string');
n2 = get(handles.edit2,'string');
S = str2double(n1) / str2double(n2);
set(handles.edit3,'String',num2str(S))
至此,你已经成功完成了一个 MATLAB 简易计算器。
更复杂的拓展:如投射运动图形界面
你还可以创建更复杂的 GUI,例如投射运动图像绘制界面,允许用户输入初速度、角度等参数,程序绘图。只需稍加扩展,甚至可以绘制任意自定义函数图像。