一文学会MATLAB GUI设计,多个实例进行超详细的讲解,有代码逻辑和注释

基于MATLAB的可视化GUI界面设计
GUI界面的打开:
1:打开MATLAB
2:在命令行输入

>>guide

在这里插入图片描述
3:选择你所需要创建的GUI,一般为默认
4:通过添加你所需要实现的功能
在这里插入图片描述
5:双击2中的功能块,修改该功能(如按钮,编辑框等)的属性,如String,Tag,Value,ForegroudColor,BackgroudColor等、编辑完成,记得回车(Enter),否则可能会导致修改不成功,Tag值唯一标识,可通过Tag值访问句柄值。
在这里插入图片描述
6:点击保存后会生成一个.Fig文件,一个.m文件。.Fig文件用于对GUI界面的修改,.m文件用于功能的实现以及功能块之间的交互和相互调用等。
7:若是不小心将编辑的.Fig文件关闭了,直接打开运行会报错
正确的做法:在命令行输入:guide后,在弹出的对话框中选择“打开现有的GUI”,选择你所需要的.Fig即可
在这里插入图片描述

.m文件中,函数交互的详细逻辑:
.m文件创建的对象和GUIDE创建的对象之间的相互访问的问题:
自定义:
在这里插入图片描述

-----------------------------------美腻的分割线----------------------------------------------------

**实例1:**实现sinx cosx tanx 的画图功能和Clear功能
一:GUI的创建和属性的设置
在这里插入图片描述
Axes对象的Tag为:
在这里插入图片描述

sin按钮对象的String 和 Tag值为:
在这里插入图片描述

cos按钮对象的String和Tag值为:
在这里插入图片描述

tan按钮对象的String和Tag值为:
在这里插入图片描述

Clear的String和Tag值为:
在这里插入图片描述

字体颜色和背景颜色可以找到ForegroudColor,BackgroudColor设置,其他属性同上…

二:函数的写入
OpeingFcn函数对应OutouputFcn ,全局变量可在OpeingFcn函数中定义

注意:主函数不要动!否则可能会导致GUI打开失败,无法进行函数写入等处理。
在这里插入图片描述
1:由于后面可能会一直用到x(sinx cosx tanx),所以先在OpengFcn中定义x:
在这里插入图片描述
最后的guidata…是用来更新handles结构体的

2:写入Clear的回调函数(右键Clear按钮,选择View Callbacks(或者:查看回调) ,点击Callback转到该按钮的功能函数编写区)
在这里插入图片描述
用try保留字
在这里插入图片描述
:allchild为所有的子对象,plotarea为之前设置的Axes的Tag值。
该句的作用:保证在初始化界面中,没有图形的时候,执行Clear操作不会显示错误

3:对sinx进行功能写入
在这里插入图片描述
通过handles.x可以访问自变量,handles.Tag可以访问Axes
运行可以得到:
在这里插入图片描述
cosx tanx等,同理:
在这里插入图片描述
如果进行sinx的绘图之后,再点击cosx等的绘图会替代上一次的绘图。若需要将每一次绘的图进行同时显示,可以在Axes的属性中,找到NextPlot,将属性改为add。
在这里插入图片描述

对tanx进行范围约束;
在这里插入图片描述
运行可得:
在这里插入图片描述
可以将sinx cosx tanx进行颜色的修改,如:

plot(handles.plotarea,x,y,’r’)

在这里插入图片描述
-----------------------------------美腻的分割线----------------------------------------------------
实例2:
实现点击button1中的按钮,随机生成一个数据,通过自定义的按钮使得其在Edit中显现。
handles.rand=rand
%获取rand随机数的句柄值,将该句柄值赋值到handles的某个字段中
%可通过handles.rand中的字段访问GUI数据。在这里插入图片描述
修改:
在这里插入图片描述
在这里插入图片描述
↑:将生成的随机数通过点击push按键,num2str型到Edit编辑框中。
在这里插入图片描述

-----------------------------------美腻的分割线----------------------------------------------------
打开一个GUI已有的按钮Push Button (Tag=pushbutton1),编写Callback函数,与自定义的按键联系起来。
在这里插入图片描述

(GUI中的按键)-在该回调函数中,为自定义的按钮写一个“String”值。可以通过handles.push(为自定义按钮的Tag)访问,达到一致访问的目的(通过handles结构体访问)。
在这里插入图片描述
若想对自定义的按钮加入回调函数,可以通过Callback属性设置
(基于其余的Callback函数属性的设置)
例:
在这里插入图片描述
都是Tag_Callback,后面三个输入参数为:hObject ,eventdata,handles
hObject 为当前的对象,比如说在OpengFcn中,hObject 为当前的Figure,在该按钮的Callback函数中,hObject为当前的按钮的句柄值。
eventdata为保留的属性,一般为空。

为保持回调函数的一致性
在这里插入图片描述

然后自己写出回调函数
在这里插入图片描述
在该回调函数中,设置刚才GUI中拖拉的String,即:
在这里插入图片描述
会报错
在这里插入图片描述
解决方法:去了另外两个参数,只有handles是所需回调参数
在这里插入图片描述

单击1,2变Run,单击2,3变Run
在这里插入图片描述
总结:
在这里插入图片描述
=OVER=========

在《MATLAB语音信号处理:滤波器设计与分析》文中,你将找到关于带通滤波器设计及其GUI界面实现的详细指导。首先,你需要了解带通滤波器的目的是让特定频率范围内的信号通过,同时抑制低于或高于该频率范围的信号。在MATLAB设计带通滤波器通常涉及到以下几个步骤: 参考资源链接:[MATLAB语音信号处理:滤波器设计与分析](https://wenku.csdn.net/doc/6uidu4o2d8?spm=1055.2569.3001.10343) 1. 定义滤波器的通带频率和阻带频率。通常,通带频率范围由信号处理需求决定,而阻带频率范围则是为了确保信号中不包含不必要的频率成分。 2. 选择合适的滤波器设计方法。在MATLAB中,可以使用内置函数如butter、cheby1、cheby2或ellip来设计不同类型的IIR带通滤波器。对于FIR滤波器,可以选择窗函数法或者使用fir2、fir1等函数。 3. 确定滤波器的阶数。滤波器的阶数越高,其频率选择性越好,但同时可能会引入更大的相位失真和更复杂的计算。 4. 使用MATLAB函数设计滤波器。如,使用butter函数设计个巴特沃斯带通滤波器的代码可能如下: ``` [b, a] = butter(N, [Wn1 Wn2], 'bandpass'); ``` 其中N是滤波器的阶数,Wn1和Wn2是归化截止频率。 5. 使用filter函数将设计好的滤波器应用到信号上: ``` y = filter(b, a, x); ``` 这里x是原始信号,y是滤波后的信号。 6. 创建GUI界面,以方便用户选择滤波器参数并展示滤波效果。MATLAB中可以使用GUIDE或App Designer工具来创建图形用户界面。在这个界面中,你需要添加按钮、文本框和其他控件来接收用户输入,并且通过绘图控件实时展示滤波前后的信号波形和频谱。 7. 分析滤波器的频率响应特性。可以通过绘制滤波器的频率响应曲线来实现,使用freqz函数可以轻松完成: ``` [h, w] = freqz(b, a, n); % n是用于绘制频率响应的点数 plot(w/pi, 20*log10(abs(h))); ``` 这将显示出滤波器的幅度响应。 8. 在GUI中实时展示滤波前后信号的频谱,可以使用FFT分析滤波前后的音频信号频谱,并通过图形界面展示这些结果。 通过上述步骤,你不仅能完成带通滤波器的设计,还能够创建个用户友好的界面来展示滤波器对音频信号的影响。《MATLAB语音信号处理:滤波器设计与分析》将为你提供从基础到应用的全方位指导,帮助你深入理解MATLAB在数字信号处理中的应用。 参考资源链接:[MATLAB语音信号处理:滤波器设计与分析](https://wenku.csdn.net/doc/6uidu4o2d8?spm=1055.2569.3001.10343)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值