带你从零开始,快速学会 Matlab GUI

article/2025/10/6 17:49:31

本文来自作者 木木小迷哥 在 GitChat 上分享「Matlab GUI 零基础学员快速入门」,阅读原文」查看交流实录

文末高能

编辑 | 洛肯

Matlab广泛地应用于数学分析、计算、自动控制、系统仿真、数字信号处理、图像处理、数理统计、人工智能、通信工程和金融系统等领域。

本活动针对零基础学员,结合个人经验,使 Matlab 新手少走弯路、快速入门(相应的代码用斜体表示)。具体内容如下:

  • Matlab 基础知识

  • Matlab 绘图

  • Matlab GUI 编程

  • 相关知识介绍

  • 交流讨论

1. Matlab 基础知识

1.1 Matlab操作环境

Matlab为用户提供了简洁易用的界面操作环境,主界面上显示的常用主要功能模块包括:新建脚本、当前工作目录、命令行窗口、工作空间、Simulink工具等。如下图所示。

注1.1:编程时候通常ctrl+n新建一个脚本文件,然后点击ctrl+s把文件保存到当前工作目录。然后可以在新建的脚本文件里写代码,执行代码后产生的数据结果将在工作空间显示。

1.2 常用命令介绍

Matlab提供了一些简单的命令,平时经常用到。总结在下表中。

  • clc                        清空命令行窗口

  • clear                     清除工作空间所有变量

  • clear all                清除工作空间所有变量和函数

  • close all                关闭图形窗口

  • save name            保存工作空间变量到文件name.mat中

  • save name x y       保存工作空间变量x,y到文件name.mat中

  • load name             载入name.mat文件中的所有变量到工作空间

  • load name x y        载入name.mat文件中的的变量x,y到工作空间

  • “ 向上箭头”             调用上一次的命

  • “ 向下箭头”             调用下一行的命令

  • Tab    函数自动补全

注1.2:了解常用命令即可,不必死记硬背。使用时,可百度查询相应的命令或者查询帮助文档。

1.3 M文件编辑器

代码通常可写在Matlab的M文件编辑器中,这样便于调试代码。使用时可通过快捷键ctrl+n或者点击Matlab主界面的“新建脚本”来创建空白的M文件。然后可在M文件中编写代码。此外,笔者个人习惯上在M文件开头写上clc; clear all; close all;等命令,如下图所示。

1.4 Matlab使用帮助

  1. 可通过help命令查询相关函数使用说明

  2. 可在互联网查询相关函数使用说明,并往往可以查到多个实例,便于初学者使用。

1.5 Matlab数值运算

1)加减乘除实例

可以看到在M文件(上图右侧)编写代码的话,运算过程和结果(上图左侧)都较为清晰,同时方便对源代码(上图右侧)进行修改。

2)矩阵运算实例

1.6 Matlab符号运算

Matlab符号运算种类很多,支持常用的代数运算、积分、微分、极限等。

1)极限实例

可以看到,结果为:1。

2)微分实例

3)积分实例

此外,Matlab还支持其他一些常用的符号计算。相应的函数如下:

  • 合并表达式    collect

  • 展开表达式    expand

  • 因式分解    factor

  • 嵌套表达式    horner

  • 计算最小分母公因式    Numden

  • 求反函数    finverse

2. Matlab 绘图

2.1 绘二维图形

1)实例1:绘制正弦曲线(使用的函数:plot)。代码如下:

clc
clear all
close all
%%
x = -10:0.1:10;
figure(1)
plot(x,sin(x));

相应的图形如下:

2)实例2:绘制余弦曲线。代码如下:

clc
clear all
close all
%%
x = -10:0.1:10;
y = sin(x);
figure(1)
plot(x,y);

相应的图形如下:

3)实例3:同时绘制多个图形(使用函数hold on)绘制正余弦曲线,代码如下:

clc
clear all
close all
%%
x = -10:0.1:10;
y1 = sin(x);
y2 = cos(x);
figure(1)
plot(x,y1);
hold on;
plot(x,y2)

相应的图形如下:

2.2 设置曲线属性

  • -       实线

  • :      虚线

  • -.     点划线

  • —     双划线

  • b    蓝色

  • g    绿色

  • r    红色

  • c    青色

  • m    品红

  • y    黄色

  • k    黑色

  • w    白色

Matlab中,除了可以设置曲线形状和颜色外,还可以为曲线中的数据点设置属性。这样就可以选择不同的数据点行,从而方便的将不同的曲线区分开来。Matlab中的数据点行的属性如下:

  • .    实心黑点

  • +    +字符号

  • ^    上三角符

  • d    菱形

  • h    六角星

  • o    空心圆圈

  • p    五角星

  • s    方块符

  • x    差字符号

1)实例说明代码如下:

clc
clear all
close all
%%
x = -6pi:0.1:6pi;
y = sin(x);
figure(1)
plot(x,y,’r—‘,’linewidth’,2);

图形如下:

2)设置坐标轴范围,使用的函数 axis,实例:

clc
clear all
close all
%%
x = 0:0.01:pi/2;
plot(x,tan(x),’-ro’);
axis([0 pi/2 0 50])
grid on

相应的图形如下:

3)图形标识:legend函数,title函数,xlabel函数,ylabel函数,text函数等…..

实例如下:绘制sin(x)和cos(x),分别为红色实现和蓝色点划线。

clc
clear all
close all
%%
x = -3pi:0.1:3pi;
y1 = sin(x);
y2 = cos(x);
figure(1)
plot(x,y1,’r-‘);
hold on
plot(x,y2,’b—‘)
legend(‘sin(x)’,’cos(x)’);
axis([-12 12 -1.5 1.5])
grid on

相应的图形如下:

4)其他图形绘制函数介绍

Matlab还支持其他形状的图形绘制。现总结如下:

函数名称    功能介绍
subplot    绘制多子图
plotyy    绘制双坐标轴
area    绘制面积图
bar    绘制直方图
pie    绘制二维饼图

Matlab绘图命令非常丰富,未能一一详细列举,如有用到可上网查询。

3. Matlab GUI编程

图形用户界面(GUI)是为方便用户和计算机信息交流而设计的计算机程序,它是由窗口、菜单、图标、光标、按键、对话框、文本框等组成的用户界面。它让用户定制与Matlab的交互方式,而命令窗口不是唯一与Matlab的交互方式。

3.1 图形用户界面开发环境(GUIDE)

Matlab提供了一套可视化的创建图形窗口的工具,使用图形用户界面开发环境可方便地创建GUI应用程序,它可以根据用户设计的GUI布局,自动生成M文件的框架,用户使用这一框架编制自己的应用程序。

同时,Matlab提供了一套可视化的创建图形用户接口(GUI)的工具,如下图所示:

下面对其进行详细介绍。

1)布局编辑器(Layout editor)如下:

布局编辑器用于从控件选择板上选择控件对象并拖拽到布局区合适的位置去。 在命令窗口输入GUIDE命令即可打开空白的布局编辑器图形用户界面。

2)位置调整工具(Alignment tool)如下:

利用该工具,可对GUI对象设计区的多个对象的位置对齐调整。

3)属性查看器

利用对象属性查看器,可以查看每个对象的属性值,也可以修改、设置对象的属性值。

4)菜单编辑器(Menu Editor)如下

菜单编辑器包括菜单的设计和编辑,菜单编辑器有八个快捷键,可以利用它们任意添加或删除菜单,可以设置菜单项的属性,包括名称(Label)、标识(Tag)、选择是否显示分隔线(Separator above this item)、是否在菜单前加上选中标记(Item is checked)、调用函数(Callback)。利用菜单编辑器,可以创建、设置、修改下拉式菜单和快捷菜单。

5)对象浏览器(Object Browsers)

利用对象浏览器,可以查看当前设计阶段的各个句柄图形对象。可以在对象浏览器中选中一个或多个控件来打开该控件的属性编辑器。

6)Tab顺序编辑器(Tab Order Editor)

3.2 控件对象及属性

Matlab中的控件大致可分为两种,一种为动作控件,鼠标点击这些控件时会产生相应的响应。一种为静态控件,是一种不产生响应的控件,如文本框等。常用的控件属性及其描述如下:

  • BackgroundColor:取值为颜色的预定义字符或RGB数值;缺省值为浅灰色;

  • Callback:取值为字符串,可以是某个M文件名或一小段Matlab语句,当用户激活某个控件对象时,应用程序就运行该属性定义的子程序;

  • Enable:取值为on(缺省值),inactive和off;

  • Extend:取值为四元素矢量[0, 0, width, height],记录控件对象标题字符的位置和尺寸;

  • ForegroundColor:取值为颜色的预定义字符或RGB数值,该属性定义控件对象标题字符的颜色;缺省值为黑色;

  • Max,Min:取值都为数值,缺省值分别为1和0;

  • String:取值为字符串矩阵或块数组,定义控件对象标题或选项内容;

  • Style:取值可以是pushbutton(缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或listbox;

  • Units:取值可以是pixels (缺省值), normalized(相对单位), inches, centimeters(厘米)或points(磅);

  • Value:取值可以是矢量,也可以是数值,其含义及解释依赖于控件对象的类型;

  • FontAngle:取值为normal(正体,缺省值), italic(斜体), oblique(方头);

  • FontName:取值为控件标题等字体的字库名;

  • FontSize:取值为数值;

  • FontUnits:取值为points(缺省值), normalized, inches, centimeters或pixels;

  • FontWeight:取值为normal(缺省值), light,demi和bold,定义字符的粗细;

  • HorizontalAligment:取值为left,center (缺省值) 或 right,定义控件对象标题等的对齐方式。

3.3 GUI编程思路介绍

1)(控件属性设置查看)往布局编辑器添加一个控件,并双击,会出现一个界面。界面左侧是该控件的属性,包括“BackgroundColr”、“BeingDeleted”、“BusyAction”等,界面右侧是与每个属性相对应的属性值。

2)(控件名字)每个对象都有一个“名字”,即Tag属性,之所以称之为名字,是因为我们在使用这个对象的时候是通过这个Tag来找到该对象的。即通过一个非常重要的get()函数来实现。

3)(get(), set()函数)通过对象的名字(Tag属性)找到该对象以后,对该对象的操作是通过set()函数来实现。

4)(hObject, handles)用户按下某个按键,必然是想触发某个响应,即调用callbackfunction(回调函数)来执行这个响应。在这个过程中,数据通过hObject和handles.对象名来传递。

3.4实例演示(视频讲解)

1)两个数相加

命令行窗口输入guide,弹出如下窗口:

选择第一个空白GUI,点“确定”按钮。弹出如下未命名GUI界面:

点击“文件”—“另存为”,保存当前GUI界面,命名为GUI_test:

拖拽三个“可编辑文本”控件,两个“静态文本”控件,一个“按钮”控件,并在适当位置摆放好(可使用对齐工具进行控件间对齐),效果如下:

双击每个控件,对其对象属性(Tag)进行设置,属性分别设置为三个“可编辑文本”控件:string属性的属性值均为“空”;tag属性的属性值分别为number_1, number_2, number_3(对tag属性进行设置,相当于给每个控件起个不同的名字,便于后面对每个控件进行操作)。

两个“静态文本”控件:string属性的属性值分别为“+”和“=”;tag属性的属性值默认即可(因为此例中我们不需要对这两个控件的属性进行操作)。

一个“按钮”空间:string属性的属性值为“Run”;tag属性的属性值为“run_button”。

设置后的效果如下图:

下面进行编程。

点击保存按钮,会跳转到M文件编辑器,右键run_button控件,点击“查看回调”—“callback”,会进入到相应的代码编辑区,效果图如下:

下面进行代码编辑。注意get() set() hObject, handles的使用,充分理解数据如何获得和在空间之间进行传递。代码如下:

data_1_str = get(handles.number_1, ‘string’);
data_1_num = str2num(data_1_str);
data_2_string = get(handles.number_2, ‘string’);

data_2_num = str2num(data_2_string);
sum_num = data_1_num + data_2_num;

sum_str = num2str(sum_num);
set(handles.number_3, ‘string’, sum_str);

效果图如下:

2)按下按钮去绘制sin(x)

3.5 GUI高级编程

  • 1)对话框

  • 2)串口

  • 3)文件和IO

  • 4)推荐书籍  《MATLAB GUI 设计学习手记 第2版 罗华飞》

4. 相关知识介绍

Matlab应用领域非常广泛,包括数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理技术、数字信号处理技术、MATLAB在通讯系统设计与仿真的应用、MATLAB在通讯系统设计与仿真的应用、通讯系统设计与仿真、财务与金融工程、管理与调度优化计算(运筹学)等各个领域,我们不可能对每个领域的都很擅长,因此结合自身研究方向,选择合适的参考资料进行学习。

这里给出一个比较好的学习网站(不仅限于Matlab):www.youtube.com,Google和百度里也有非常多的学习资料。

学习建议:针对Matlab GUI,理解所列举的核心思想;针对自己的研究课题,以任务为导向,有针对性学习某方向的知识;借助互联网,搜索相关资料。

 近期热文

Java 多线程编程核心技术有哪些

Python 的 C 扩展开发惯例

如何成为一名程序员面霸

轻松入门 | 用 WordPress 和主题模板做网站

Java 8 Stream API 实用指南

GitChat 与 CSDN 联合推出

《GitChat 达人课:AI 工程师职业指南》

「阅读原文」看交流实录,你想知道的都在这里


http://chatgpt.dhexx.cn/article/xqxU8jxp.shtml

相关文章

如何用Matlab设计GUI?

如何用matlab设计gui? | TinTin 什么是GUI?matlab编程可以设计GUI吗? GUI定义:GUI指的是图形用户界面(Graphical User Interface,GUI),也称之为图形用户接口,GUI是用图形化方式显示…

Matlab GUI界面使用方法(一):打开GUIGUI常用控件(最基础)

GUI界面能够为我们的matlab代码提供一些有好的交互界面,下面是matlab中gui界面的一些使用方法(因为我在使用gui时,常常因为找不到一些控件的使用方法或某些功能的实现方法,所以在此为大家提供一些我遇到过的问题的解决方法&#x…

【MATLAB学习笔记——GUI】

Matlab中GUI 学习笔记 虽然打开matlab后提示说GUI后续版本会取消(以后的版本中将会删除 GUIDE。请改用 APPDESIGNER。 ),但是老师布置了matlab GUI实验,所以说还得学习学习,所以记录学习过程,学习笔记。 …

MATLAB:简单GUI的设计流程

下面来介绍一下关于MATLAB中如何设计个性化GUI界面的流程: 1、首先打开MATLAB软件如下: 2、在 主页下的“新建”选项中选择新建一个图形用户界面(GUI),结果如下: 3、这是我们选择第一个“Blank GUI&#x…

图像处理 Matlab GUI系统(全)

目录 导读 数字图像处理系统 GUI实例设计 总结 【若觉文章质量良好且有用,请别忘了点赞收藏加关注,这将是我继续分享的动力,万分感谢!】 导读 以数字图像处理系统设计为例,介绍GUI系统的设计流程,同时…

MATLAB之GUI界面介绍与搭建

作为图形用户界面(GUI)的小白,先来了解一下GUI界面的内容: MATLAB中常用的是利用guide命令搭建GUI界面。 第一步: 命令行窗口输入>>guide 第二步:弹出GUIDE快速入门窗口,选择新建GUI(同理…

Matlab制作GUI

效果图 图1.主界面 图2.其中一个子界面 具体步骤 1.界面设置 输入guide并选中运行 2.菜单设置(图1上方) 3.背景图片 参考https://blog.csdn.net/leo0308/article/details/82694995 4.界面跳转 在自动生成的Untitled_5_Callback末尾加一句set&am…

Matlab写的第一个GUI程序(程序设计,界面设计)

写在前面:博主用的Matlab版本是2016b,属于旧版本,大概在2019版本开始属于新版本叭,新版本写程序在APP菜单有设计APP这个选项,旧版本的则是在主页的新建选项下有GUI选项 目录 1.新建项目 1.1找到入口 1.2项目模板选择…

Matlab GUI界面设计

摘要:本篇博文基于MATLAB2014a进行GUI设计。 1.启动GUI设计 命令行输入guide,回车。 即可得到下面的对话框,进行相关的选择和设置 点击确定,得到两个文件,一个是.m文件,另一个是.fig文件,需要…

MATLAB(6)GUI应用介绍

目录 GUI编辑器控件属性回调函数 MATLAB常见的控件普通按钮切换按钮可编辑文本字符获取字符显示 复选框单选按钮弹出式菜单滑动条列表框表坐标区 附录各文件共享数据保存获取 GUI编辑器 MATLAB的GUI编辑器在命令行窗口输入“guide”启动,选择模板并点击确定后创建对…

matlab设计GUI可视化界面全方位解析

如何使用matlab设计GUI及导出 一、GUI的基础知识开始生成GUI界面回调函数Handles结构体GUI中的参数传递 二、控件介绍一、普通按钮二、可编辑文本(edit)和静态文本(text)三、单选框(radiobutton)和复选框&a…

matlabGUI入门

matlabGUI入门 前言1 基础知识1.1 函数1.2 数据类型1.3 绘图1.4 其它 2 GUIDE2.1 创建GUI界面2.2 模板选择2.3 控件2.4 对象浏览器2.5 回调函数2.6 属性检查器2.7 数据传输 前言 由窗口、菜单、图标、光标、按键、对话框和文本等各种图形对象组成的用户界面叫作图形用户界面&a…

matlab gui编程教程,matlab如何使用gui

如何在Matlab中打开GUI工具 两种方法1、输入guide回车。2、在工具栏里点击带笔形的gui。 为Matlab的GUI添加启动画面:添加启动画面,启动画面中可以添加想要添加的图像……VisualC可以实现这个功能,Matlab也可以实现,具体如下&am…

Matlab系列之GUI设计基础

Matlab系列之GUI设计基础 简介编辑界面菜单设计控件设计控件描述个人理解Matlab转译 控件属性【1】外观与行为【2】控件对象的信息【3】回调函数【4】状态信息 结束更多精彩,等你发现~ 简介 GUI即图形用户界面(Graphical User Interface),人…

BERT的get_sequence_output与get_pooled_output方法

BERT的get_sequence_output方法获取token向量是如何得到的? 通过如下方法得到,实际上获取的是encoder端最后一层编码层的特征向量。 BERT的get_pooled_output方法获取的句子向量是如何得到的? 通过如下方法得到,实际上获取的是[…

mybatis 连接池POOLED分析

mybatis提供了三种连接池的配置方式: 配置的位置:主配置文件SqlMapConfig.xml中的dataSource标签,type属性就是表示采用何种连接池方式。 type属性的取值: POOLED 采用传统的javax.sql.DataSource规范中的连接池,…

读论文:Pooled Contextualized Embeddings for Named Entity Recognition

最近在看命名实体识别方向的最新的paper。在这个方向&#xff0c;18年年底有一篇<contextual string embedding for sequence labeling>&#xff0c;在CoNLL03 数据集的F1值超过BERT达到了93.09。做法是弄了个预训练的character_embedding&#xff0c;用character_embedd…

pooled-jms_Hibernate隐藏的宝石:pooled-lo优化器

pooled-jms 介绍 在这篇文章中&#xff0c;我们将揭示一个序列标识符生成器&#xff0c;​​它结合了标识符分配效率和与其他外部系统的互操作性&#xff08;同时访问底层数据库系统&#xff09;。 传统上&#xff0c;有两种序列标识符策略可供选择。 序列标识符&#xff0c;…

idea__MyBatis框架08——连接池(POOLED 跟 UNPOOLED )

一、继续上一节&#xff0c;把一些不用的注释给清理掉&#xff0c;看一下我们的mybatis主配置文件&#xff0c;重点看type。 二、Type详细介绍&#xff1a; mybatis连接池提供了3种方式的配置&#xff1a; type属性就是表示采用何种连接池方式。type属性的取值&#xff1a;POOL…

PODNet: Pooled Outputs Distillation for Small-Tasks Incremental Learning论文详解ECCV2020

ECCV2020 论文地址&#xff1a;https://doi.org/10.1007/978-3-030-58565_6 代码地址&#xff1a;https://github.com/arthurdouillard/incremental learning.pytorch 目录 1.贡献点 2.方法 2.1 pool类型 2.2 POD&#xff08;Pooled Outputs Distillation&#xff09;方…