当前位置:文档之家› 数字信号发生器

数字信号发生器

第1章摘要MATLAB是一个数据分析和处理功能十分强大的工程实用软件,具有很多工具箱,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,以及数字信号处理工具箱使在数字信号处理方面方便实用。

数字信号发生器是一种基于软硬件实现的波形发生器,可以实现各种基本波形的产生。

由于工程中各种复杂的信号是由这些基本信号叠加而成的,而这些简单信号都可以有数字信号发生器来实现,在工程分析和实验教学中广泛实用,所以设计一种简单而实用的数字信号发生器很有必要。

在本文中将介绍用matlab设计一个简单的信号发生器的基本流程,详细的介绍设计的技术路线和实现方法以及存在的问题。

关键词:Matlab,数字信号发生器AbstractMATLAB is an very powerful and practical software in data analysis and processing in engineering, it contains many toolboxes such as data acquisition toolbox and data processing toolbox. It's data acquisition toolbox provide many very convenient functions and commands for the input and output of data.Digital signal generator is a software and hardware based waveform generator, can produce a variety of basic waveform. In engineering, many complex signals are combined with this basic waveform, so it is necessary to develop a digital signal generator for teaching and experiment use.In this article, I will introduced how to design a simple signal generator in details. I will also introduce the technology route and my problems.Keywords: Matlab, Digital Signal Generator目录目录第1章摘要 (1)Abstract (2)第一章引言 (4)第二章设计路线 (5)第三章实现方法 (5)3.1 图形界面设计 (5)3.2 程序的编写及调试 (6)第四章存在的问题 (10)第五章结束语 (11)第六章致谢 (11)参考文献 (12)第一章引言随着现代科学技术的发展,工程中越来越多的工作需要借助计算机来实现,信号发生器原本是模拟电子技术发展的产物,到后来的数字信号发生器也是通过硬件实现的,本文将给出通过计算机软件实现的数字信号发生器。

信号发生器是一种常用的信号源,广泛应用于电子技术实验、自控系统和科学研究等领域。

传统的台式仪器如任意函数发生器等加工工艺复杂、价格高、仪器面板单调、数据存储、处理不方便。

以Matlab和LabVlEW为代表的软件的出现,轻松地用虚拟仪器技术解决了这些问题。

Matlab是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱(data acquisition toolbox)为实现数据的输入和输出提供了十分方便的函数和命令,利用这些函数和命令可以很容易地实现对外部物理世界的信号输出和输入。

根据声卡输出信号的原理,采用Matlab软件编程,可以方便地输出所需要的方波、正弦波、三角波、锯齿波、冲击串波、抽样波等多种信号,有效地实现信号发生器的基本功能。

第二章设计路线本次设计的题目是数字信号发生器的设计,即使用Matlab的图形用户界面(GUI)设计一个数字信号发生器,实现可视化的图形界面,方便的实现基本信号的设计。

MATLAB提供了功能强大的集成GUI开发环境GUIDE。

在编程时只需将按键和现实部分放到指定区域内,对他们进行编程即可,完成后便可得到良好的人机界面。

设计时,先要设计一个图形界面,其中有绘图区域的设计、波形选择界面(正弦波、方波、三角波、锯齿波、白噪声),然后是程序的编写以及调试。

由于设计时幅值、相位、频率等信息的滚动条和输入框程序未调试成功,故再此只演示简单的数字信号发生器。

其可以实现正弦波、方波、三角波、锯齿波、白噪声的产生,但不可以在界面上调节。

第三章实现方法3.1 图形界面设计(1)打开MATLAB,新建一个空白的图形界面文件(使用guide命令),设计需要添加的控件种类及个数并设计它们的布局。

(a)添加1个axes控件,用于显示波形;(b)添加1个Button group,依放置5个按钮;(c)加6个Radio button 控件用于各种波形操作的开始控制,双击各个控件并修改其名称,分别命名为:正弦波、方波、三角波、锯齿波、白噪声。

并修改其控件大小及及其调整间距、对齐等。

所得界面如下:图1 数字信号发生器主界面(2)各控件对应的回调函数的编辑界面控件及布局创建完成以后,修改各个波形相对应的string属性。

正弦波对应的是正弦波、方波对应的是方波、三角波对应的是三角波、锯齿波对应的是锯齿波、白噪声对应的是白噪声。

另外,修改字体大小Fontsize为11。

其余可自行设置3.2 程序的编写及调试由于用switch语句可以很简单的实现不同数字信号的实现,故采用switch 语句实现信号选择并输出。

1.初始状态段程序编写function gui1_OpeningFcn(hObject, eventdata, handles, varargin)global A f phi %A f phi定义为全局变量A=1;f=1;phi=60; %设置初始值t=0:2*pi/1000:2*pi; %设置采样点y=A*sin(2*pi*f*t+phi);cla;plot(t,y) %初始显示正弦波grid on %绘制网格线axis([0,2*pi,-1.2*A,1.2*A])%绘制坐标轴2.主程序段的编写function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)A=1;f=1;phi=60; %设置初始值str=get(hObject,'String'); %获取按钮框中按钮的名称axes(handles.axes1) %限制绘图区域为axes1switch str %用swith语句实现绘制按钮所输入的命令的波形case '正弦波't=0:2*pi/1000:2*pi;y=A*sin(2*pi*f*t+phi);cla;plot(t,y)grid onaxis([0,2*pi,-1.2*A,1.2*A])case '方波't=0:5/1000:5;y=A*square(2*pi*f*t+phi,50);cla;plot(t,y,'r','LineWidth',1.5)grid onaxis([0,5,-1.2*A,1.2*A])case '三角波't=0:10/1000:10;y=A*sawtooth(pi*f*t+phi,0.5);cla;plot(t,y,'g','LineWidth',1.5)grid onaxis([0,5,-1.2*A,1.2*A])case '锯齿波't=0:10/1000:10;y=A*sawtooth(pi*f*t+phi,1);cla;plot(t,y,'y','LineWidth',1.5)grid onaxis([0,5,-1.2*A,1.2*A])case '白噪声'n=200;y=A*rand(1,n);cla;plot(y,'m')grid onaxis([0,inf,-0.2,1.2*A])end3.程序的调试及运行运行完成的回调函数并运行。

结果如下:图2 数字信号发生器初始状态---正弦波图3 方波图4 三角波图5 锯齿波图6 白噪声第四章存在的问题(1)由于设计数字信号发生器时幅值、频率、相位的设计未成功,故不可以在界面上实现动态的输入,还不完善,需进一步的补充。

(2)设计时单独一个人做,做时出了问题往往要花很多时间才能找出错误,设计效率较低下。

(3)对Matlab的GUI界面不熟悉。

(4)可以设计简单的界面,但界面复杂后就很难实现各种控件的协调、函数的调用。

(5)函数调用方法不清楚,各个函数调用出错。

第五章结束语Matlab是一个功能强大的工程应用辅助软件,编程较C语言方便,通过此次设计更加深了对其的了解。

在以后的学习中,我会更加努力,争取把Matlab 学好,并理论联系实际,用Matlab辅助数字信号的处理,学会Matlab数字信号处理工具箱的各种函数,为把Matlab应用到实际中而努力。

第六章致谢工程数字信号处理算法与实践是一门理论与实践相结合但更偏重于实践的课程,对于提高我们学生自己的动手能力有很大的帮助。

在课程的学习过程中,何岭松老师一直强调学以致用,在每一阶段给我们设置了一个任务,让我们带着问题去学习,从查找文献到提取有用信息,从软件安装到实际操作,从编程到最后的调试,在这一过程中我自主能动性被激发出来,迫使我克服一个有一个难题。

老师提倡的这种“无形”的自主学习方式,正是我接下来的研究生阶段发现问题——解决问题模式。

通过这样的一次训练,我对今如何进行学习研究有了清晰的理解,在这里向他表示感谢。

同时,在设计的完成过程中,我从实验室师兄那里得到了宝贵的建议和帮助,有时他们的一个字,一句话就让我有醍醐灌顶,茅塞顿开之感。

同时,寝室室友之间的交流也让我收益匪浅,在此一并表示诚挚的谢意。

参考文献[1] 张志涌等,MATLAB R2010a 教程北京航空航天大学出版社,2010.8[2] 车子萍, 基于Matlab的虚拟信号发生器设计. 电脑学习. 2010.2 No.1[3] 蔡辉, 基于MATLAB的数字信号发生器设计报告。

相关主题