前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matlab上位机开发(三)波形显示(幅度和频率可调节)

Matlab上位机开发(三)波形显示(幅度和频率可调节)

作者头像
Mculover666
发布2020-07-16 14:23:12
1.5K0
发布2020-07-16 14:23:12
举报
文章被收录于专栏:TencentOS-tinyTencentOS-tiny

1. 控件布局

打开Matlab,在命令行输入guide启动GUI设计工具,拖动控件开始设计:

波形显示控件(axes)

波形显示控件可以用于绘制各种波形,拖动控件到画布中即可,然后根据需要调整控件大小:

滑动条控件(slider)

滑动条可以用于滑动调节波形的频率和幅度,并拖动两个静态文件控件用于说明:

双击频率的滑动条,设置其最大值和最小值,以及默认值:

同样,设置幅度的属性值:

可编辑文本框(edit)

可编辑文本框有两个功能:

  • 用于直接设置波形的频率和幅度;
  • 用于显示滑动条设置的频率值和幅度值;

拖动两个编辑框并在属性中设置其默认值:

按钮控件

按钮控件用于启动波形显示:

保存设计

设计完成之后,点击保存按钮或者按Ctrl+S保存设计:

2. 回调函数,让界面动起来

滑动条和编辑框联动

首先编辑滑动条的回调函数,实现拖动滑动条,编辑框可以显示对应的值:

代码语言:javascript
复制
v1 = get(handles.slider1, 'Value');
s1 = sprintf("%f", v1);
set(handles.edit1, 'String', s1);

点击运行,查看效果:

同样,编写另一个滑动条的回调函数:

代码语言:javascript
复制
v2 = get(handles.slider2,'Value');
s2 = sprintf("%f", v2);
set(handles.edit2, 'String', s2);

实现的效果如下:

再来编写频率文本编辑框的回调函数,当输入一个值的时候,滑动条的值跟着变化:

代码语言:javascript
复制
s1=get(handles.edit1,'String');
v1=str2double(s1);
set(handles.slider1,'Value',v1);

同样,再来编写幅度文本框的回调函数:

代码语言:javascript
复制
s2=get(handles.edit2,'String');
v2=str2double(s2);
set(handles.slider2,'Value',v2);

编写一个绘制波形的自定义函数

点击按钮、调节滑动条,都需要重新绘制波形,所以先编写一个自定义函数,供其它函数调用:

代码语言:javascript
复制
function draw_wave(handles)
global Fs
global A
Fs = 44100;
dt=1.0/Fs;
T =2;
N=T/dt;
t=linspace(0,T,N);
s1=get(handles.edit1,'String');
F=str2double(s1);
s1=get(handles.edit2,'String');
A=str2double(s1);
x =A*sin(2*pi*F*t);
plot(handles.axes1,t,x,'b','LineWidth',1.5);
axis(handles.axes1,[0, 0.01, -2500,2500]);
grid(handles.axes1);

点击按钮,显示波形

编写按钮的回调函数,在回调函数里调用之前编写的自定义函数显示波形:

代码语言:javascript
复制
draw_wave(handles);

运行效果如下:

添加频率滑动条调节波形功能

继续编辑滑动条的回调函数,添加波形显示功能:

频率调节滑动条完整的回调函数如下:

代码语言:javascript
复制
v1 = get(handles.slider1, 'Value');
s1 = sprintf("%f", v1);
set(handles.edit1, 'String', s1);
global Fs
Fs = v1;
draw_wave(handles);

运行效果如下:

添加幅度滑动条调节波形功能

继续编辑滑动条的回调函数,添加波形显示功能:

幅度调节滑动条完整的回调函数如下:

代码语言:javascript
复制
v2 = get(handles.slider2,'Value');
s2 = sprintf("%f", v2);
set(handles.edit2, 'String', s2);
global A
A = v2;
draw_wave(handles);

运行效果如下:

添加编辑框调节频率和幅度的功能

同样,在频率编辑框的回调函数中添加代码,完整的回调函数如下:

代码语言:javascript
复制
s1=get(handles.edit1,'String');
v1=str2double(s1);
set(handles.slider1,'Value',v1);
global Fs
Fs = v1;
draw_wave(handles);

在幅度编辑框的回调函数添加同样的功能,完整的回调函数如下:

代码语言:javascript
复制
s2=get(handles.edit2,'String');
v2=str2double(s2);
set(handles.slider2,'Value',v2);
global A
A = v2;
draw_wave(handles);

运行即可看到效果,请参考下一节的完整演示效果。

3. 演示效果

整个程序的完整演示效果如下:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Mculover666 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 控件布局
    • 波形显示控件(axes)
      • 滑动条控件(slider)
        • 可编辑文本框(edit)
          • 按钮控件
            • 保存设计
            • 2. 回调函数,让界面动起来
              • 滑动条和编辑框联动
                • 编写一个绘制波形的自定义函数
                  • 点击按钮,显示波形
                    • 添加频率滑动条调节波形功能
                      • 添加幅度滑动条调节波形功能
                        • 添加编辑框调节频率和幅度的功能
                        • 3. 演示效果
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档