本文主要是介绍MATLB信号发生器GUI实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、应用背景
传统的台式函数信号发生器具有体积庞大,接口不灵活,波形固定,价格昂贵等缺点,针对此现状,本次根据老师布置的作业完成一个简单的数字信号发生器,可以产生不同幅值,频率的白噪声、正弦波、锯齿波、方波。工具选择为matlab,它具有强大的数据分析功能和数据处理功能[1],其自带的库函数为信号波形的产生带来了很大的方便。正文详细介绍了通过计算机声卡如何完成虚拟数字信号发生器的基本原理以及出现波形所需要实现的具体函数。
二、课题介绍
本文主要介绍了利用计算机编程工具matlab,通过计算机声卡实现虚拟数字信号发生器的基本原理以及实现步骤;针对传统数字信号发生器的缺点,完成虚拟数字信号发生器的设计,实现简单数字信号如三角波、锯齿波、方波、白噪声等的发生。
三、 技术路线
声卡是实现声波/数字信号相互转换的一种硬件[2],在一般通常使用的PC机配置声卡中,大豆提供了麦克风输入和扬声器输出2个接口,他们集成了信号IO需要的模/数转换器(ADC)和数/模转换器(DAC)。因此,我们只需要将产生的数字信号通过音频线引出即可获得声音输出。
所有波形由matlab中所带的函数绘制完成,通过固定的接口函数,完成波形与声卡的对接,从而实现波形与音频信号的转换。
四、实现方法
4.1 白噪声的产生
白噪声是指功率谱密度在整个频域内均匀分布的噪声。 所有频率具有相同能量的随机噪声称为白噪声。系统辨识中所用到的数据通常bai都是含有噪声的。从工du程实际出发,这种噪声往往可以视为具有有理谱密度的平稳随机过程。白噪声是一种最简单的随机过程,是有一系列不相关的随机变量组成的理想化随机过程。其自相关函数为dirac函数。
其运行效果如图4.2所示:
4.2白噪声波形效果图
4.2 正弦波形的产生
4.3正弦波形效果图
4.3锯齿波形的产生
锯齿波也是常见的波形之一。标准锯齿波的波形如图3.4,先呈直线上升,随后陡落,再上升,再陡落,如此反复。
4.4 锯齿波波形
4.5锯齿波的产生
4.4 三角波的产生
4.6三角波运行效果图
4.5 方波
方波的产生同样调用matlab中自带的库函数,其实现方式为在按钮回调函数后加入代码,其运行结果如图3.7
4.7 方波函数
4.6 数字信号音频输出
现有的电脑大都装有显卡,这就大大方便了我们在计算机上进行基于声卡的数字信号发生器的设计。Matlab中已经有存在的接口函数与之对应,通过调用语句wavplay(y,44100,‘async’);,即可完成。
五、GUI界面设计
在开发一个实际的应用程序时都会尽量做到界面友好,最常用的方法就是使用图形界面。其能够使用户的学习和使用更为方便容易。用户不需要知道应用程序究竟怎样执行各种命令的,而只需要了解可见界面组件的使用方法;用户也不需要知道命令是怎么执行的,只要通过与界面交互就可以使指定的行为得以正确执行。
正是MATLAB为用户开发图形界面提供了一个方便高效的集成开发环境,MATLAB图形用户界面开发环境GUIDE(MATLAB Graphical User Interface Development Environment)。GUIDE主要是一个界面设计工具集,MATLAB R2011B将所有GUI支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法。GUIDE将用户设计好的GUI界面保存在一个FIG资源文件中,同时还能够生成包含GUI初始化和组件界面布局控制代码的M文件。这个M文件为实现回调函数(当用户激活GUI某一组件时执行的函数)提供了一个参考框架。
5.1 GUI界面的打开
在MATLAB 中,GUIDE提供了多种设计模块以方便用户轻松的定制属于自己的GUI。这些模块均包括了相关的回调函数,用户可以打开它所对应的M文件,修改实现自己需要的功能的函数。
在MATLAB 中,可以通过两种方法来进入GUI界面:
在MATLAB 的命令窗口中直接输入guide并且回车。
点击如图5.1所示的红色标志就可以打开GUI建立窗口。
然后再弹出来的选择窗口中选择Blank GUI(Default),并将其保存在自己选择的文件夹中。点击OK后,就会弹出组合面板窗口,如图5.3所示,在这个面板中,用户可以按照自己的需要添加相应的控件。
图5.1 GUI打开方式
(1)组件面板
在GUI界面中放置组件,首先单击工具栏中的按钮,光标变成十字形后使用十字形光标的中心点来确定组件左上角的位置,或者通过在界面区域内单击并拖动鼠标来确定组件的大小。如图5.3给出的一个添加组件的示例。
GUI组件布置完成后,可以使用菜单栏中最后一个三角形按钮或Tools菜单中的ActivateFigure选项来观察GUIDE的设计结果。这时会自动生成一个FIG文件和一个M文件,FIG文件会提示保存路径。双击界面区域内的按钮就会弹出属性窗口,可以修改自己需要的属性。
图5.2 添加组件示例
(2)编程回调函数
布置完GUI组件后,接下来最重要的一步就是编程每个按钮的回调函数,实现自己需要的功能,其编程过程为:
1、右键单击按钮,待弹出选择窗口时,选择最后一项即views callbacks;
2、鼠标放在views callbacks后就会弹出子选择窗口,根据自己的按钮属性选择相应的函数回调;
3、选择完函数后,则会自动跳到M文件中该按钮所对应的回调函数,在该段函数中,可以编写自己需要实现该按钮的功能的代码。
待所有按钮的功能的回调函数都编写完毕后,点击保存,然后点击菜单栏中的三角形按钮,则会弹出用户开发界面,在该用户开发界面中,用户可以单击按钮以实现该按钮所拥有的功能。如图5.4所示。
5.3 作品演示
在MATLAB R2012a的命令窗口中输入guide后,选择自己弄好的GUI的路径,打开GUI。然后单击菜单栏中的三角形按钮则弹出如图5.4的用户开发界面。
用户可以通过点击按钮,弹出对话框后,选择交通标志,并且进行识别出来。
图5.3 运行界面
点击识别后,则会对测试图片进行识别。如图5.5所示,并将所得到的结果在MATLAB命令窗口显示出来。
图5.4 运行结果
这篇关于MATLB信号发生器GUI实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!