背景:学习matlab gui编程入门,完成一个基于GUIDE的图形化界面程序,结合信号生成及分析等。

操作步骤:

1、新建程序

新建一个GUIDE程序

这里选择第一个选项,即创建一个空白的GUIDE模板(下面的三个选项为matlab自带的3个guide模板,可以尝试使用,但是空白模板更灵活一些)。

创建完成后,将会得到这样一个面板,这就是进行matlab进行guide图形化编程界面,在这里我们可以添加我们需要的各种控件到面板中。

可以看到上图中的,左侧有7行2列共14个常用的控件,添加时直接拖动即可,右侧的带油栅格的面板就是完成guide变成后,程序运行时的图形化界面。

7行2列控件分别为:

普通按钮 滑动条
单选按钮 复选按钮
可编辑文本 静态文本
弹出式菜单 列表框
切换按钮
坐标轴 面板
按钮组 ActiveX控件

其中常用的控件包括:普通按钮、滑动条、可编辑文本、静态文本、坐标轴等。

2、图形化界面编程

首先可以根据预计生成的面板的大小,拉伸编程面板。

然后将需要的控件拖拽到编程面板中,并进行布局。这里可以使用上方工具栏的“对其对象”工具,进行布局。如:

完成布局后可以双击各个控件,修改其属性,控件的属性面板如下:(以滑动条为例)

下面,对几个比较重要的属性进行介绍:

字体属性:

滑动条变量取值范围:

标注文字(String)&标签(Tag):标签是最重要的属性,在代码中对每一个控件进行操作时,都是以其tag作为索引。

单位(Units)&初始值(Value):单位一般会选择charaters(绝对单位)和normalized(相对单位),选择characters则输出值为设定的最大最小值之间的实际值,选择normalized则输出值为归一化后的0~1之间的值。

其他各个控件的属性会有一些区别,和各个控件自身的特性有关,基本可以直接根据各个属性的字面意思理解。

完成控件的添加、布局和属性设定后,即可得到一个如下的界面图:

3、m文件编程:

完成上述图形编程后,点击保存,则会自动根据我们的设定,生成一个m文件模板。

模板中主要有以下几个部分:

1、程序初始化

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @signal_generator_OpeningFcn, ...
'gui_OutputFcn', @signal_generator_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

注意,这部分自动生成的初始化代码,一般不要修改!

2、程序open founction

% --- Executes just before signal_generator is made visible.
function signal_generator_OpeningFcn(hObject, eventdata, handles, varargin)

这部分代码会在完成图形界面控件的创建后,首先运行,一般可以在这里添加一些自定义变量的初始化代码等。

3、控件回调函数 callback

% --- Executes on button press in noise.
function noise_Callback(hObject, eventdata, handles)

这部分函数会分别对应于我们在图形编程界面添加的每一个控件,当某一个控件发生操作时,程序对自动调用它对应的回调函数(类似于中断回调函数)。

4、我们在生成的m文件中,自行添加自定义函数,完成我们需要执行的任务。将自定义函数在控件的回调函数中国调用即可。

以下为我完成的信号发生+时域分析 GUI程序的m文件代码,仅供参考:(文件可以在我的博客中下载)

function varargout = signal_generator(varargin)

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @signal_generator_OpeningFcn, ...
'gui_OutputFcn', @signal_generator_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT % --- Executes just before signal_generator is made visible.
function signal_generator_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
global t;
global run;
% text windos init
set(handles.fre_text,'string',get(handles.fre_slider,'value'));
set(handles.amp_text,'string',get(handles.amp_slider,'value'));
% x axes data
%handles.x = linspace(0,0.03,441*3);
handles.x = linspace(0,1.5,44100*1.5);
% wave shape data
handles.shape = 2;
% data init
t = 0;
run = 0;
handles
guidata(hObject, handles); % --- Outputs from this function are returned to the command line.
function varargout = signal_generator_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output; function my_callback(handles)
global sound_y;
global plot_y;
global plot_x;
global t;
x = handles.x;
fre = get(handles.fre_slider,'value');
amp = get(handles.amp_slider,'value');
% white noise
if handles.shape == 1
sound_y = 0.5*amp*wgn(1,44100*1.5,1);
% sin singal
elseif handles.shape == 2
sound_y = amp*sin(2*pi*fre*x);
% square singal
elseif handles.shape == 3
sound_y = amp*square(2*pi*fre*x);
% trangle singal
elseif handles.shape == 4
sound_y = amp*sawtooth(2*pi*fre*x,0.5);
end
plot_x = x(:,(1+t):(3*441+t));
plot_y = sound_y(:,(1+t):(3*441+t));
plot(handles.monitor,plot_x,plot_y);
set(handles.monitor,'ylimmode','manual');
set(handles.monitor,'ylim',[-2000,2000]);
% get peak value
peak_max = max(plot_y);
peak_min = min(plot_y);
peak_value = peak_max - peak_min;
set(handles.peak,'string',num2str(peak_value));
% get mean value
mean_value = mean(plot_y);
set(handles.mean,'string',num2str(mean_value));
% get rms value
rms_value = rms(plot_y);
set(handles.rms,'string',num2str(rms_value));
% % get frequency value
% fre_value = fft(plot_y);
% aaa = abs(fre_value);
% [m,p] = max(aaa);
% set(handles.std,'string',num2str(p));
% get std error value
std_value = std(plot_y);
set(handles.std,'string',num2str(std_value)); % --- Executes on button press in noise.
function noise_Callback(hObject, eventdata, handles)
handles.shape = 1;
guidata(hObject, handles);
my_callback(handles); % --- Executes on button press in square.
function square_Callback(hObject, eventdata, handles)
handles.shape = 3;
guidata(hObject, handles);
my_callback(handles); % --- Executes on button press in trangle.
function trangle_Callback(hObject, eventdata, handles)
handles.shape = 4;
guidata(hObject, handles);
my_callback(handles); % --- Executes on button press in sin.
function sin_Callback(hObject, eventdata, handles)
handles.shape = 2;
guidata(hObject, handles);
my_callback(handles); % --- Executes on slider movement.
function fre_slider_Callback(hObject, eventdata, handles)
set(handles.fre_text,'string',get(handles.fre_slider,'value'));
my_callback(handles); % --- Executes during object creation, after setting all properties.
function fre_slider_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end function fre_text_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties.
function fre_text_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end % --- Executes on slider movement.
function amp_slider_Callback(hObject, eventdata, handles)
set(handles.amp_text,'string',get(handles.amp_slider,'value'));
my_callback(handles); % --- Executes during object creation, after setting all properties.
function amp_slider_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end function amp_text_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties.
function amp_text_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end % --- Executes on button press in run.
function run_Callback(hObject, eventdata, handles)
global t;
global run;
run = 1;
while run == 1
t = t+2;
my_callback(handles);
set(handles.monitor,'xlimmode','manual');
set(handles.monitor,'xlim',[(1+t)*0.000022,(3*441+t)*0.000022]);
pause(0.01);
end % --- Executes on button press in stop.
function stop_Callback(hObject, eventdata, handles)
global run;
run = 0; % --- Executes on button press in play.
function play_Callback(hObject, eventdata, handles)
global sound_y;
sound(sound_y,44100); % --- Executes on button press in clear.
function clear_Callback(hObject, eventdata, handles)
delete(allchild(handles.monitor)); function peak_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties.
function peak_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end function mean_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties.
function mean_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end function rms_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties.
function rms_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end function std_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties.
function std_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

——cloud over sky

——2020/3/23

Matlab GUI程序设计入门——信号发生器+时域分析的更多相关文章

  1. [转]matlab GUI 新手入门——最基本的几个概念

    本文摘自iLoveMatlab论坛 1.从最简单的开始 编程的基本思想是:我执行一个操作,程序做出一个反应."一个操作"包括点击鼠标.拖动滑块.填写数据.选择选项等:"做 ...

  2. MATLAB GUI程序设计中ListBox控件在运行期间消失的原因及解决方法

    在运行期间,ListBox控件突然消失,同时给出如下错误提示: Warning: single-selection listbox control requires that Value be an ...

  3. MATLAB GUI程序设计中使文本框接收多行输入的方法

    对于文本框来说 Max属性于Min属性数值之差小于等于1时,仅接收单行输入 大于1时,接受多行输入 对于多行情况,set/get到的String应为cell 本系列文章允许转载,转载请保留全文! [说 ...

  4. 《MATLAB面向对象程序设计》

    <MATLAB面向对象程序设计> 基本信息 作者: 苗志宏    马金强 出版社:电子工业出版社 ISBN:9787121233449 上架时间:2014-6-18 出版日期:2014 年 ...

  5. Matlab GUI memo

    有一段时间没写博客,一周4篇文章都坚持不下来,不知道写哪个方面的内容,写研究相关就怕论文查重查到,其他方面也没太多时间去学.还是花时间多学点其他方面.废话到此,很早就做过matlab gui相关,现在 ...

  6. 信号与系统实验序章0——MATLAB基础命令入门

    本次开启新的系列,关于用Matlab实现常见信号和函数的生成和变换. 同时如果没有MATLAB基础,那么可以跟着本文一步一步学习Matlab的相关操作,本文旨在记录在信号与系统课程中MATLAB的学习 ...

  7. matlab GUI界面编程总结

    去年做了一些关于Matlab GUI的程序,现在又要做相关的东西,回想起来,当时很多经验没有记录下来,现在回顾起来始终觉得不爽,所以从现在开始,一定要勤写记录. 从简单的例子说起吧. 创建Matlab ...

  8. Entity Framework 程序设计入门二 对数据进行CRUD操作和查询

    前一篇文章介绍了应用LLBL Gen生成Entity Framework所需要的类型定义,用一行代码完成数据资料的读取, <LLBL Gen + Entity Framework 程序设计入门& ...

  9. 转载:关于Matlab GUI的一些经验总结

    去年做了一些关于Matlab GUI的程序,现在又要做相关的东西,回想起来,当时很多经验没有记录下来,现在回顾起来始终觉得不爽,所以从现在开始,一定要勤写记录. 从简单的例子说起吧. 创建Matlab ...

随机推荐

  1. FPGA实现-shift_ram_3x3矩阵

    shift_ram_3x3-FPGA实现 实现的方法为方法二,可以参考上一节关于中值滤波的介绍 shift_ram核介绍 https://www.cnblogs.com/ninghechuan/p/6 ...

  2. Redis服务器和客户端的通信

    Redis客户端使用RESP(Redis序列化协议)与Redis服务器进行通信,RESP在位于TCP之上,而网络模型上客户端和服务器是保持的双工的连接.如图1 而一个简单的请求/响应的串行通信模型如下 ...

  3. Mybatis使用ResultMap

    解决字段名和属性名不一致的问题 - 新建数据库表的字段-这里就不贴上了 在下面链接有 https://www.cnblogs.com/rzkwz/p/12853899.html 设置实体类和数据库字段 ...

  4. Android中限制输入框最大输入长度

    通常情况下只需要在布局文件中加入maxlength这一属性即可 <EditText android:inputType="text" android:singleLine=& ...

  5. 在windows环境里,用Docker搭建Redis开发环境(新书第一个章节)

    大家都知道高并发分布式组件的重要性,而且如果要进大厂,这些技术不可或缺.但这些技术的学习难点在于,大多数项目里的分布式组件,都是搭建在Linux系统上,在自己的windows机器上很难搭建开发环境,如 ...

  6. Linux内核驱动学习(三)字符型设备驱动之初体验

    Linux字符型设备驱动之初体验 文章目录 Linux字符型设备驱动之初体验 前言 框架 字符型设备 程序实现 cdev kobj owner file_operations dev_t 设备注册过程 ...

  7. Excel+Python:分组求和

    Excel选中区域,排除序号.姓名等列,复制Ctrl+C. Python,import pandas as pd,读取剪切板并赋值给变量df,df.groupby('部门').sum().若要避免部门 ...

  8. Java语言简介、基础组成、封装、继承、多态、抽象类、内部类、接口

    目录 Java简介 Java语言基础组成 面向对象 对象 封装 构造函数 this关键字 static(静态关键字) 主函数 静态什么时候用呢? 面向对象(数组工具对象建立) 设计模式 继承 成员变量 ...

  9. HTTP Strict Transport Security (通常简称为HSTS)

    HTTP Strict Transport Security (通常简称为HSTS) 是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式. Freebuf百科:什么是Str ...

  10. 测试开发专题:如何在spring-boot中进行参数校验

    上文我们讨论了spring-boot如何去获取前端传递过来的参数,那传递过来总不能直接使用,需要对这些参数进行校验,符合程序的要求才会进行下一步的处理,所以本篇文章我们主要讨论spring-boot中 ...