matlab2019b的gui界面在哪_MATLAB(3)——GUI界面设计入门

本文是MATLAB GUI界面设计的入门教程,介绍了如何创建一个基础的加法器GUI,包括新建GUI、设置控件属性、编写回调函数以及运行GUI的多种方式。此外,还提及了如何将MATLAB程序编译为.exe可执行文件。
摘要由CSDN通过智能技术生成

作者:桂。

时间:2017-03-01  18:43:35

声明:转载请注明出处,谢谢。

396860384b76153759934811f980528b.png

前言

本文为MATLAB系列第三篇,主要是自己学习GUI界面设计的记录,此文后续会不定期更新。写本文的初衷是:

如何让一个不懂MATLAB的人员,可以进行一些操作,或者设定一些参数?

文章内容主要为自己的学习笔记,内容多有借鉴他人,最后把链接一并附上。

一、搭建最基本的GUI

本节通过两个例子进行论述,分别介绍GUI基本操作,即数值运算、数据导入、图形绘制等功能的GUI实现。

A-加法器

首先上效果图:

ae42a4966c7b7906c0e21ed3f73b4fe6.png

输入两个数值,点击Add!,便可显示结果,下面开始逐步介绍。

GUI新建

常用的新建GUI方法有两个:

Command Window输入guide—>Create New GUI;

Home—>New—>Graphical User Interface;

注意:勾选“Sace new figure as:”,可选择存储路径,并对文件命名。

0c5d21112938505acb1e1b19264e8ff9.png

这里我们选择默认的“Blank GUI(Default)”,点击“OK”,便可进入, 本文主要用到以下几个选框:

5bd5cb23a217c151ad4c47afa902f247.png

GUI框架搭建

本文为基础内容,框架内修改的主要是

点击需要添加的选框至面板中,双击选框,特性中:

e6e6138a8d1c15355f9a305e2b844d4e.png

其中

String:显示的名称;

Tag:标签,主要用于程序编写时,对变量进行定位;

常用:

position:指示空间在figure中的位置

font**:字体相关属性

string:相当如VB中的caption,就是显示在控件上的文字

tag:控件的唯一标识符,相当于ID,我们需要tag来指定某一个空间

因此,我们只需要设定参与操作的选框tag;对于不涉及操作、仅仅作为显示的选框,其tag我们可以默认。

分析加法器,我们总共需要的选框:

2f718755441563b3c2d5ce0fbf589d1c.png

其中,涉及操作的有:

两个输入(两个编辑文本框) + 一个执行加法运算的开关(一个确定按钮)+结果显示(一个静态文本框)。

设置完成的效果图:

599bcf18b0ef036b540452a5e9e448d5.png

点击“保存”,此时便出现.m和.fig两个文件,加法器的GUI框架搭建完毕。

GUI对应代码完善

步骤一:设定tag、String等参数;

首先是回调函数的定位(如果已经退出GUI编辑框,可Command Window输入guilde进入):

591ce291c097d4bcdd9faa3a57766bb0.png

选中并右键—>Viwe Callbacks—>Callback,即可打开对应的函数模块。

对应提取数据的代码(提出为字符,需要进行str2num的转换)

a = get(handles.input_a,'String');%String的S大写

假设两个输入框的String分别设为0(无输入默认显示0),tag分别设定为:

input1_editText,input2_editText

OK按钮重命名:String设置为:Add! 对应tag为:

add_pushbutton

结果的String设为0,对应tag设为:

answer_staticText

步骤二:读取输入参数

打开第一个输入框,函数模块初始为

function input1_editText_Callback(hObject, eventdata, handles)

% hObject handle to input1_editText (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'String') returns contents of input1_editText as text

% str2double(get(hObject,'String')) returns contents of

% input1_editText as a double

编辑回调函数,修改为:

% handles 包含figure中所有图形对象句柄的结构体,如果我们想引用tag为mytag的控件,使用handles.mytag

% set/get 函数是用来设置/获取某个控件属性

% 使用get命令获取第一个加数,并将它转换成数值

input = str2num(get(hObject,'String')); % string属性是字符串,所以必须转换成数值

% 检验输入是否为空,是则将它置为0

if (isempty(input))

set(hObject,'String','0')

end

% 保存handles结构体,只要在handles结构体有改变时,才需要保存

guidata(hObject, handles); % 这里由于handles没有改变,故这里其实没有必要,建议在所有Callback最后都添加该命令,此处为将参数设定为GUI变量,可全局调用。

第二个输入框同第一个输入框的操作相同;

步骤三:输出结果的显示

关联控制键,并将结果赋给对应的tag,初始的回调函数:

% --- Executes on button press in add_pushbutton.

function add_pushbutton_Callback(hObject, eventdata, handles)

% hObject handle to add_pushbutton (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

修改后:

a = get(handles.input1_editText,'String');

b = get(handles.input2_editText,'String');

% a和b是字符串变量,我们需要使用str2double函数将其转换为数值

% 然后才能相加,否则字符串是没法相加的

total = str2num(a) + str2num(b); % 格式转换,转换为数值

% 由于string属性是字符串,所以必须将两个数的和转换为字符串

c = num2str(total); % 转换为字符串

% 将结果赋值给answer_staticText空间的string属性,于是就可以显示结果了

set(handles.answer_staticText,'String',c);

guidata(hObject, handles); % 更新结构体

至此,完成了GUI代码的完善。

GUI运行

GUI的运行主要分为三种方式。

方式一:Current Directory运行.m文件

同普通程序运行一致,运行结束即弹出GUI画框,按要求操作即可。

方式二:GUI界面run

Command Window输入guide,进入GUI编辑界面,点击右上角的

7d113154ee65bcefe0c6ef74ccbb159d.png,即弹出GUI界面。

方式三:Command Window运行GUI文件名

例如有GUI程序:example.fig,切换到该文件的目录下,在Command Window输入example,回车运行,即弹出GUI界面。

自己实现了GUI零的突破,希望后面掌握相关技巧后,来一个加法器的GUI升级。

——记录此处,提醒自己

B-语音增强

学习GUI,实现最基本的功能,读取一段语音信号(co-channel),并对带噪信号进行归一化自适应滤波(NLMS),实现语音信号增强。这里给出读取文件的指令,

降噪以及NLMS等算法的实现,具体参考自适应滤波。本文不再展开论述,感兴趣的朋友,可以拿这个作为小练习(●'◡'●)。

实现功能描述:

1)点击“load”,加载需要处理的语音信号;

2)读取并对带噪信号进行自适应滤波;

3)绘制处理前后语音信号的时域波形图、时频能量图;

%==============加载文件指令=======================

[FileName,PathName] = uigetfile('*.wav'); %打开对话框

fle = [PathName FileName]; % 构成完整的路径和文件名

[s,fs,nbits] = wavread(fle);  %新版本MATLAB为audioread

%==============绘图指令==========================

%需要在GUI界面插入axes框

axes(handles.axes3); %打开的文件显示在第一个图

plot(time,r1./max(abs(r1)),'k');

ylabel('幅度');xlabel('时间(s)');

title('带噪信号波形图');

对应效果图:

e739bb4eb038b2fbd63b9f1c98910a81.png

感兴趣的朋友可以留言交流:Q-441039377。

二、生成.exe可执行文件

GUI界面固然友好,但很多朋友甚至不会操作MATLAB界面,如何让他们进行一些操作呢?利用程序生成.exe是一个不错的办法。

如果计算机已经安装编译器,即可直接在Command Window输入:

mcc -m 文件名;%文件名为*.m的部分

此时,对应文件夹下会出现:文件名.exe 。双击运行即可进入GUI界面,无需通过MATLAB打开,对于更小白的人士,可以发送桌面快捷方式。

如果没有安装编译器,则需要如下操作:

安装编译器:

Command Window输入:mex -setup;

然后根据提示选择,直到安装完毕;

设置编译器:

Command Window输入:mbuild -setup;

然后根据提示选择,直到操作结束;

将脚本编译为exe可执行文件:

如文件夹下有:example.m  example.fig;

则Command Window输入:mcc -m example;

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值