基于MATLAB的数字信号发生器报告
基于MATLAB的函数信号发生器1

基于MATLAB的函数信号发生器1信息系统仿真设计实训报告学院信息电子技术专业****班级******8学号********8姓名***指导教师***2014年7月25日基于MATLAB的函数信号发生器1、目的函数信号发生器是基于软硬件实现的一种波形发生仪器。
在工工程实践中需要检测和分析的各种复杂信号均可分解成各简单信号之和,而这些简单信号可由函数信号发生器模拟产生,因此它在工程分析和实验教学有着广泛的应用。
MATLAB 是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在信号处理方面方便实用。
本文介绍了使MATLAB建立一个简单函数信号发生器的基本流程,并详细叙述了简单波形(正弦波、方波、三角波、锯齿波、白噪声、脉冲)信号的具体实现方法。
通过此次的设计对MATLAB有个更深刻的了解,熟练的使用MATLAB的GUI设计简单的界面程序。
2、工作原理与计算该虚拟信号发生器的设计由GUI界面及其对应的程序组成。
设计函数发生器有正弦信号、方波信号、三角波、锯齿波、白噪声、脉冲信号。
其中,前五种波形都可以利用MATLAB提供的函数实现,并根据输入的幅值、相位、频率等信息进行调整。
根据脉冲信号在某一时刻出现的一冲激特点,可由编写程序来实现。
界面主要由MATLAB创建,之后编写界面所用的函数,从而实现函数信号发生器。
(1)正弦信号的实现正弦波信号的数学表达式如(1)。
ωφ()其中:A为幅值;ω为频率; 为相位。
在MATLAB中,幅值、频率、相位、在用户界面输入。
y的表达式都得到以后,用plot二维作图函数获得波形显示。
(2)方波信号的实现与正弦波一样,从用户界面获得幅值、频率、相位、采样频率等信息,用square 函数获得对应y坐标值,用plot绘图,格式如(2)。
()其中duty为占空比。
(3)三角波和锯齿波的实现这两种波形的表达式皆要借助于sawtooth命令。
基于MATLAB的信号发生器设计说明

方波(square)
方波参数如表3所示。设采样率:samp
数组表示: t=0:(1/samp):1; y= offset + amplitude* sign(duty/100/ frequency -mod(t,
硬件设定(板卡选择和通道选择)
板卡选择
源代码段: out = daqhwinfo; device=out.InstalledAdaptors set(handles.device,'string',device);
说明:daqhwinfo.InstalledAdaptors包含安装的硬件 板卡的信息,将其加入作为下拉列表框的选项。
说明:t在1秒内有samp个均匀采样点,y做为samp×1的一维数组 输出到板卡的一个通道。频率变化的方式不同,输出表达式也不
同。
注意:method有两个选项:linear和log;
符号“./”用于数组间运算。
自定义波(self-define)
自定义波参数如表8所示。设采样率:samp
MATLAB的GUI设计中,有两种设计方式:利用GUI编辑器和编写M文
件。
GUI是用户的操作界面,是选择波形、设定和修改波形参数、
设定采样率、选择输出通道和运行、停止程序的人机交互接口。
本程序的界面中,可选波形包括正余弦(sin),Sa波(sinc),
方波(square),三角波(triangle),锯齿波(tooth),噪声
数组表示: t=0:(1/samp):1; y=offset+amplitude*sin(2*pi*frequency*t+phase*pi/180+eps)
MATLAB信号与系统实验报告19472[五篇范文]
![MATLAB信号与系统实验报告19472[五篇范文]](https://img.taocdn.com/s3/m/a72999dee109581b6bd97f19227916888486b9f2.png)
MATLAB信号与系统实验报告19472[五篇范文]第一篇:MATLAB信号与系统实验报告19472信号与系统实验陈诉(5)MATLAB 综合实验项目二连续系统的频域阐发目的:周期信号输入连续系统的响应可用傅里叶级数阐发。
由于盘算历程啰嗦,最适适用MATLAB 盘算。
通过编程实现对输入信号、输出信号的频谱和时域响应的盘算,认识盘算机在系统阐发中的作用。
任务:线性连续系统的系统函数为11)(+=ωωjj H,输入信号为周期矩形波如图 1 所示,用MATLAB 阐发系统的输入频谱、输出频谱以及系统的时域响应。
-3-2-1 0 1 2 300.511.52Time(sec)图 1要领:1、确定周期信号 f(t)的频谱nF&。
基波频率Ω。
2、确定系统函数 )(Ω jn H。
3、盘算输出信号的频谱n nF jn H Y&&)(Ω=4、系统的时域响应∑∞-∞=Ω=nt jnn eY t y&)(MATLAB 盘算为y=Y_n*exp(j*w0*n“*t);要求(画出 3 幅图):1、在一幅图中画输入信号f(t)和输入信号幅度频谱|F(jω)|。
用两个子图画出。
2、画出系统函数的幅度频谱|H(jω)|。
3、在一幅图中画输出信号y(t)和输出信号幅度频谱|Y(jω)|。
用两个子图画出。
解:(1)阐发盘算:输入信号的频谱为(n)输入信号最小周期为=2,脉冲宽度,基波频率Ω=2π/ =π,所以(n)系统函数为因此输出信号的频谱为系统响应为(2)步伐:t=linspace(-3,3,300);tau_T=1/4;%n0=-20;n1=20;n=n0:n1;%盘算谐波次数20F_n=tau_T*Sa(tau_T*pi*n);f=2*(rectpuls(t+1.75,0.5)+rectpuls(t-0.25,0.5)+rectpuls(t-2.25,0.5));figure(1),subplot(2,1,1),line(t,f,”linewidth“,2);%输入信号的波形 axis([-3,3,-0.1,2.1]);grid onxlabel(”Time(sec)“,”fontsize“,8),title(”输入信号“,”fontweight“,”bold“)%设定字体巨细,文本字符的粗细text(-0.4,0.8,”f(t)“)subplot(2,1,2),stem(n,abs(F_n),”.“);%输入信号的幅度频谱xlabel(”n“,”fontsize“,8),title(”输入信号的幅度频谱“,”fontweight“,”bold“)text(-4.0,0.2,”|Fn|“)H_n=1./(i*n*pi+1);figure(2),stem(n,abs(H_n),”.“);%系统函数的幅度频谱xlabel(”n“,”fontsize“,8),title(”系统函数的幅度频谱“,”fontweight“,”bold“)text(-2.5,0.5,”|Hn|“)Y_n=H_n.*F_n;y=Y_n*exp(i*pi*n”*t);figure(3),subplot(2,1,1),line(t,y,“linewidth”,2);%输出信号的波形 axis([-3,3,0,0.5]);grid onxlabel(“Time(sec)”,“fontsize”,8),title(“输出信号”,“fontweight”,“bold”)text(-0.4,0.3,“y(t)”)subplot(2,1,2),stem(n,abs(Y_n),“.”);%输出信号的幅度频谱xlabel(“n”,“fontsize”,8),title(“输出信号的幅度频谱”,“fontweight”,“bold”)text(-4.0,0.2,“|Yn|”)(3)波形:-3-2-1 0 1 2 300.511.52Time(sec)输入信号f(t)-20-15-10-5 0 5 10 15 2000.10.20.30.4n输入信号的幅度频谱|Fn|-20-15-10-5 0 5 10 15 2000.10.20.30.40.50.60.70.80.91n系统函数的幅度频谱|Hn|-3-2-1 0 1 2 300.10.20.30.4Time(sec)输出信号y(t)-20-15-10-5 0 5 10 15 2000.10.20.30.4n输出信号的幅度频谱|Yn| 项目三连续系统的复频域阐发目的:周期信号输入连续系统的响应也可用拉氏变更阐发。
matlab实验报告-数字信号的产生和频谱分析

实验一 数字信号的产生和频谱分析一. 实验目的1.掌握采样定理内容,熟悉连续信号经理想采样前后的频谱变化关系,加深时域采样定理的理解。
2.熟悉FFT 算法原理和FFT 子程序的应用。
3.学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT 。
掌握利用FFT 进行信号谱分析的原理。
4.理解信号通过高斯白噪声信道的原理。
二. 实验要求1. 按照采样定理生成CW 信号和LFM 信号;2. 画出信号时域波形图和频谱图;3. 生成高斯分布的白噪声;4. 生成一定信噪比的带噪信号,并对其进行谱分析。
三. 基本原理所谓抽样。
就是对时间连续的信号隔一定的时间间隔T 抽取一个瞬时幅度值在一个频带限制在(0,t )内的时间连续信号f (t ),如果以fs 的抽样频率对它进行抽样,那么根据这些抽样值就能完全恢复原信号。
根据抽样定理只有当发生fs ≥2fm ,抽样后的信号才能包含原连续的全部信息。
对于一个连续信号)(t x a ∧进行理想采样的过程可用下式表示:)()()(t p t x t x a a =∧其中)(t x a ∧是对)(t x a 的理想采样,)(t p 为周期冲激脉冲,即∑∞-∞=-=m nT t t p )()(δ)(t x a ∧的傅里叶变换)(Ω∧j X a 为)]([1)(Ω-Ω=Ω∑∞-∞=∧m j XTj X m aa上式表明)(Ω∧j X a 为)(Ωj X a 的周期延拓,其延拓周期为采样角频率(T s /2π=Ω)。
只有满足采样定理时,才不会发生频率混叠失真。
将②代入①进行傅里叶变换可得ˆ()[()()]()()()j taa n j ta n j nTa n X j x t t nT edtx t t nT edtx nT eωδδ∞∞-Ω-∞=-∞∞∞-Ω-∞=-∞∞-Ω=-∞=-=-=∑⎰∑⎰∑式中的()a x nT 就是采样后得到的序列()x n ,即 ()()a x n x n T =x(n)的傅里叶变换为()()j j nn X ex n eωω∞=-∞=∑比较两式可得 ˆ()()|j a TX j X e ωωω=Ω=这说明两者之间只在频率度量上差一个常数因子T 。
(数字信号发生器+电子琴)实验报告

实验一数字信号发生器和电子琴制作一、实验目的1.熟悉matlab的软件环境,掌握信号处理的方法,能在matlab的环境下完成对信号的基本处理;2.学会使用matlab的GUI控件编辑图形用户界面;3.了解matlab中一些常用函数的使用及常用运算符,并能使用函数完成基本的信号处理;二、实验仪器计算机一台,matlab R2009b软件。
三、实验原理1.数字信号发生器MATLAB是矩阵实验室(Matrix Laboratory)的简称,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB 和Simulink两大部分。
已知的常用正弦波、方波及三角波,可以通过matlab自带的函数实现,通过改变函数的幅值、相位和频率可以得到不同的信号。
正弦信号:y=A*sin(2*pi*f*t);方波信号:y=A*square(2*f*pi*x+c);三角波信号:y=A*sawtooth(2*pi*f*x+c);2. 电子琴电子琴的每个音阶均对应一个特定频率的信号,通过调用数字信号发生器产生一系列指定的频率的声音,从而达到虚拟的电子琴的功能。
界面中包含1、2、…、7共 7 个琴键,鼠标按下时即发声,松开时发声停止。
同时能够产生正弦波、方波、三角波等常见的波形的数字信号,然后将数字信号写入声卡的缓冲区,最后由声卡播放出相应的声音。
已知音乐的七个音阶的主频率分别是131Hz、147Hz、165Hz、175Hz、196Hz、220Hz和247Hz,分别构造正弦波、方波和三角波,可以组成简单的电子琴。
四、实验内容1.数字信号发生器的制作(1)搭建GUI界面图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。
Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。
基于matlab的信号发生器设计说明

Digital Signal GeneratorYangXiao M2013705103HuaZhong University of Science and TechnologySchool of Mechanical Science and Engineering Abstract: Matlab Is a numerical analysis, matrix calculation, scientific data visualization and nonlinear dynamic state system modeling and simulation, and other functions of practical software engineering.It’s easy to use the windows environment and cast off a tradition on the interactive programming language (such as C, Fortran) Edit mode In large range. In this report,The task is to design a digital signal generator bu using matlab.It could help us to understand the signal processing by designing the digital signal generator. Which has a certain application value of reference.Keyword:digital signal generator;Matlab1.PrefaceMATLAB is called Matrix Laboratory,which is designed by the United States MathWorks company.It’s a commercial mathematical software. Matlab can be use for Matrix operations, mapping functions and data, algorithm, creating the user interface, connect to other programming languages procedures, mainly used in engineering calculations, control design, signal processing and communications, image processing, signal detection, design and financial modeling analysis and other fields. GUI (Graphical User Interface, referred to as GUI, known Graphical User Interface) is displayed using the graphical user interface of computer operations.. Matlab has a powerful GUl tool. In this report, by using matlab GUI tool we could a designed digital signal generator .2. IntroduceProgram reference implementation of MATLAB Data Acquisition Toolbox. In MATLAB design, there are two designs: the GUI editor and M-file write. This design use GUI editor . The GUI is user interface, which is to select the waveform, set and modify the waveform parameters, set the sampling rate,select the output channel and run. This program GUI interface provided: sin, square, triangle, sawtooth, while noise, to choice. Also we could change waveform parameters to change waveform’s shape. As frequency amplitude phase and sample have provided gave us to change.The interface is that:2.1 Interface3. Design PrinciplesThe task is to design the digital signal generator which can generate sine wave, square wave, triangle wave, sawtoothwave, and white noise. All the waveform can use MATLAB function, and could be adjusted by inputting information such as the amplitude, phase and frequency .3.1 Achieve sin signalThe mathematical function of sin wave signal is that:()sin 2y A ft πφ=+A: amplitude;f: frequency;φ: phase;t: 0:1/s:1;(s is sample);The M-program is:A=get(handles.Amplitude,'Value');f=get(handles.Frequency,'Value');p=get(handles.Phase,'Value');s=get(handles.Sample,'Value');x=0:1/s:1;y=A*sin(2*pi*f*x+p);plot(handles.screen,x,y,'r');legend('sin(x)');wavplay(y);grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.1 Image of sin signal3.2 Achieve square signalThe mathematical function of square wave signal is that:(2)y Asquare ft b π=+A: amplitude;f: frequency;b: phase;t: 0:1/s:1;(s is sample);The M-program is:A=get(handles.Amplitude,'Value');f=get(handles.Frequency,'Value');p=get(handles.Phase,'Value');s=get(handles.Sample,'Value');x=0:1/s:10;y=A*square(2*pi*f*x+p);plot(handles.screen,x,y,'b');legend('square');wavplay(y);grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.2 Image of square signal3.3 Achieve triangular signalThe mathematical function of triangular wave signal is that:(2,0.5)y Asawtooth ft b π=+A: amplitude;f: frequency;b: phase;t: 0:1/s:1;(s is sample);The M-program is:A=get(handles.Amplitude,'Value');f=get(handles.Frequency,'Value');p=get(handles.Phase,'Value');s=get(handles.Sample,'Value');x=0:1/s:10;y=A*sawtooth(2*pi*f*x+p,0.5);plot(handles.screen,x,y,'b');legend(‘triangle ’);wavplay(y);grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.3 Image of triangular signal3.4 Achieve sawtooth signalThe mathematical function of sawtooth wave signal is that:(2)y Asawtooth ft b π=+A: amplitude;f: frequency;b: phase;t: 0:1/s:1;(s is sample);The M-program is:A=get(handles.Amplitude,'Value');f=get(handles.Frequency,'Value');p=get(handles.Phase,'Value');s=get(handles.Sample,'Value');x=0:1/s:10;y=A*sawtooth(2*pi*f*x+p);plot(handles.screen,x,y,'b');legend(‘tooth’);wavplay(y);grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.4 Image of sawtooth signal3.5 Achieve white noise signalThe mathematical function of white noise wave signal is that:y A rand length x=-2((1,())0.5)A: amplitude;f: frequency;b: phase;t: 0:1/s:1;(s is sample);The M-program is:A=get(handles.Amplitude,'Value');f=get(handles.Frequency,'Value');p=get(handles.Phase,'Value');s=get(handles.Sample,'Value');x=0:1/s:10;y=2* A*(rand(1,length(x))-0.5);plot(handles.screen,x,y,'b');legend('white noise');wavplay(y);grid on;axis([0,0.1,-20,20]);We could run the program by setting the parameters:3.5 Image of white noise signal4 Exist problemThere are many problems in the design because I didn’t use matlab and the GUI modules ever.(1) I am not familiar to the interface and operator of matlab,which lead to I program without efficiency.(2) Without systematic studying of matlab,I could not express my ideas by using succinct matlab language.(3)In the beginning, I don’t understand the handle deep, and don,t have a clear idea.5. ConclusionIn the latter study, I will be more systematic learning MATLAB this powerful engineering software, has a fight on his understanding of the macro, on the basis of multi-programming exercises to strengthen the commonly used functions and concepts of memory, and finally, contact practical, try to solve some common engineering problems.References[1] 薛山. MATLAB基础教程. [M] :清华大学,2011.3。
基于matlab的数字信号精品实验报告

语音信号处理与分析专业:通信工程班级: 081班姓名:祝健博学号: 2008026130 指导教师:许爽一、实验类型综合研究性实验二、实验目的1.掌握采样定理及FFT谱分析的基本原理及其利用Matlab的实现方法;2. 掌握数字滤波器的设计原理和方法;3. 学习用MATLAB编程实现语音数字滤波系统。
三、实验要求1. 利用Windows下的录音机设备采集语音信号;2. 对语音信号进行采样并混进加性噪声,作频谱分析;3. 通过频谱分析选择合适的滤波器性能指标,设计合适的数字滤波器,并对含噪音的语音信号进行数字滤波;4. 设计处理系统的用户界面(GUI),在所设计的系统界面上可以选择滤波器的参数,显示滤波器的频率响应,选择信号等。
四、数字滤波器的设计原理数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。
IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配,所以IIR 滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。
其设计方法主要有经典设计法、直接设计法和最大平滑滤波器设计法。
FIR数字滤波器的单位脉冲响应是有限长序列。
它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。
在对滤波器实际设计时,整个过程的运算量是很大的。
设计阶数较高的IIR滤波器时,计算量更大,设计过程中改变参数或滤波器类型时都要重新计算。
设计完成后对已设计的滤波器的频率响应要进行校核。
要得到幅频、相频响应特性,运算量也是很大的。
平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候要根据设计要求和滤波效果不断地调整,以达到设计的最优化。
matlab信号分析实验报告

matlab信号分析实验报告实验目的:通过使用MATLAB对信号进行分析,掌握信号分析的基本方法和技巧,了解信号的基本特性和频谱分析方法。
实验设备和软件:MATLAB软件、个人电脑实验原理:信号分析是指对信号的各种特性进行研究和分析的过程。
在信号分析中,最基本的任务是确定信号的频谱特性,即信号中包含的各种频率成分及其强度。
常用的信号分析方法有时域分析和频域分析。
实验步骤:1. 打开MATLAB软件,新建一个脚本文件。
2. 生成一个基本信号,例如正弦信号或脉冲信号。
可以使用MATLAB中的函数例如`sin`或`square`来生成。
3. 绘制信号的时域波形图。
使用`plot`函数可以将信号的时间序列绘制出来。
4. 对信号进行频谱分析。
使用`fft`函数可以对信号进行傅里叶变换,得到信号的频谱。
再使用`abs`函数计算频谱的幅度。
5. 绘制信号的频谱图。
使用`plot`函数可以将信号的频谱绘制出来。
6. 对不同的信号进行分析比较。
例如比较不同频率、不同幅度的正弦信号的频谱。
7. 对实际采集到的信号进行分析。
可以将实际采集到的信号导入到MATLAB中,并进行相应的分析。
实验结果:通过对信号进行时域分析和频域分析,可以得到信号的波形和频谱。
通过对不同信号的分析比较,可以研究信号的特性。
通过对实际采集到的信号进行处理和分析,可以了解实际信号中包含的各种频率成分及其强度。
实验结论:MATLAB是一个强大的信号分析工具,通过使用MATLAB进行信号分析,可以更好地理解信号的特性和频谱分布。
通过对实际信号的处理和分析,可以了解实际信号中包含的各种频率成分及其强度,为进一步的信号处理和特征提取提供参考。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的数字信号发生器设计报告摘要:数字信号发生器是基于软硬件实现的一种波形发生仪器。
在工工程实践中需要检测和分析的各种复杂信号均可分解成各简单信号之和,而这些简单信号皆可由数字信号发生器模拟产生,因此它在工程分析和实验教学有着广泛的应用。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。
本文介绍了使用MATLAB建立一个简单数字信号发生器的基本流程,并详细叙述了简单波形(正弦波、方波、三角波、锯齿波、白噪声)信号的具体实现方法。
关键字:MATLAB ,数字信号发生器1概述随着计算机软硬件技术的发展,越来越多现实物品的功能能够由计算机实现。
信号发生器原本是模拟电子技术发展的产物,到后来的数字信号发生器也是通过硬件实现的,本文将给出通过计算机软件实现的数字信号发生器。
信号发生器是一种常用的信号源,广泛应用于电子技术实验、自控系统和科学研究等领域。
传统的台式仪器如任意函数发生器等加工工艺复杂、价格高、仪器面板单调、数据存储、处理不方便。
以Matlab和LabVlEW 为代表的软件的出现,轻松地用虚拟仪器技术解决了这些问题。
Matlab 是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱(data acquisition toolbox )为实现数据的输入和输出提供了十分方便的函数和命令,利用这些函数和命令可以很容易地实现对外部物理世界的信号输出和输入。
根据声卡输出信号的原理,采用Matlab 软件编程,可以方便地输出所需要的正弦波、三角波、方波等多种信号,有效地实现信号发生器的基本功能。
2 设计原理要设计的数字信号有正弦信号、方波信号、三角波、锯齿波、白噪声、脉冲信号。
其中,前五种波形都可以利用MATLAB 提供的函数实现,并根据输入的幅值、相位、频率等信息进行调整。
脉冲信号由自己编写程序实现,并以定义的时间节点控制脉冲出现的时刻。
2.1 正弦信号的实现正弦波信号的数学表达式如2.1,()sin 2y A ft πφ=+ 2.1其中:A 为幅值;f 为频率;φ为相位。
在MATLAB 中,相应的数字信号可以由下式2.2计算,()()sin 2y n t A fn t πφ∆=∆+ 2.2式中时间变量t 可构造为一个一维数组,并由式2.3进行付值,0:1/:0.5t cf = 2.3其中:cf ——采样频率。
幅值、频率、相位、采样频率等在用户界面输入。
在t 与y 的表达式都得到以后,用plot 二维作图函数获得波形显示。
2.2 方波信号实现像正弦波一样,从用户界面获得幅值、频率、相位、采样频率等信息,用square 函数获得对应y 坐标值,用plot 绘图,格式如式2.4(),y square t duty = 2.4其中,duty ——占空比。
2.3 三角波和锯齿波的实现这两种波形的y 坐标表达式皆要借助于sawtooth 命令。
Sawtooth(t)用于产生周期为2π,幅值从-1 ~+1的锯齿波,波形的斜率为1/π。
Sawtooth(t ,width)用于产生三角波,其中width 是取值介于0和1之间的一个参数,它决定了在一个周期中峰值的发生点。
本设计中取width=0.5,可以获得标准形状的三角波。
完整y 坐标表达式如式2.5,()()2/360,0.5y a sawtooth ft πφ=⋅+ 2.52.4 白噪声的实现白噪声的定义:白噪声是指功率谱密度在整个频域内均匀分布的噪声。
换句话说,此信号在各个频段上的功率是一样的,由于白光是由各种频率(颜色)的单色光混合而成,因而此信号的这种具有平坦功率谱的性质被称作是“白色的”,此信号也因此被称作白噪声。
白噪声的实现借助于randn 函数,它的功能是产生一个均值为零方差为1的随机高斯分布序列,如式2.6()()*y a randn size t = 2.6其中,a ——幅值;1:1/:0.t c f = 2.5 脉冲信号的实现考虑到脉冲信号出现的时刻可以进行调节,借助图形界面输入相位信息设置时间节点,如式()0:1/:0.5;0.5*/360;t cf n x y t n ===== 2.73 设计方法(1)图形界面设计打开MATLAB ,新建一个空白的图形界面文件,计算需要添加的控件种类及个数并设计它们的布局。
(a ) 添加1个axes 控件,用于显示波形;(b)添加5个static text 控件作为窗口说明使用;(c)添加4个Slider 控件用于输入幅值、频率等信号信息;(d)添加4个edit text 控件用于显示幅值、频率等信号信息;(e)添加7个push button 空间用于各种操作的开始控制;双击各个控件并修改其颜色、大小及string属性。
得到界面如下:(2)各控件对应的回调函数的编辑界面控件及布局创建完成以后,自动生成包含各控件回调函数在内的m文件。
点击保存时可以修改fig及m文件名。
系统自动生成的m文件包括:function varargout = signalgenerator(varargin)function signalgenerator_OpeningFcn(hObject, eventdata, handles, varargin) function varargout = signalgenerator_OutputFcn(hObject, eventdata, handles以及各个控件对应的回调函数的框架,如:function a_Callback(hObject, eventdata, handles)等等。
在前面已经介绍了各个波形的实现原理及方法,现仅以正弦函数的实现为例介绍回调函数的使用及编辑。
回调函数即在一定的操作下自动执行的指令代码。
注意回调函数中定义的变量只在其内部有效。
正弦波按钮的回调函数如下:% --- Executes on button press in pushbuttonzhengxian.function pushbuttonzhengxian_Callback(hObject, eventdata, handles)% hObject handle to pushbuttonzhengxian (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)a=str2double(get(handles.editFUZHI,'String'));f=str2double(get(handles.editPINLU,'String'));x=str2double(get(handles.editXIANGWEI,'String'));cf=str2double(get(handles.editk,'String'));t=0:1/cf:0.5 ;%按设定的采样频率将时间均匀分割y=a*sin(2*pi*(f*t+x/360));plot(t,y);wavplay(y);%播放生成的信号grid on;i=10;if a<I %定义了不同情况下x轴及y轴上的坐标显示范围axis([0,0.5,-i,i]);elseaxis([0,0.5,-(a+1),(a+1)]);%超出预定值则重设坐标范围end4波形显示(1)正弦波(2)三角波以下分别是:(3)锯齿波(4)方波(5)白噪声(6)脉冲信号。
5存在的问题由于是初次使用MATLAB的GUIDE模块,在设计时暴露出了许多问题:(1)对其界面和一些操作还不熟悉,直接导致编程中效率很低;(2)对于基本的MATLAB语句和常用的函数的学习不系统,有时好的思路无法用MATLAB语言干净利落的表达;(3)在初期对句柄的理解不够深刻,思路不够清晰。
6结束语在后面的学习中,我将更系统的学习MATLAB这一强大的工程软件,争取对他有一个宏观的认识,在此基础上多进行编程练习,加强对常用函数和概念的记忆,最后,联系实际,尝试解决一些常见的工程问题。
致谢工程数字信号处理算法与实践是一门理论与实践相结合但更偏重于实践的课程,对于提高我们学生自己的动手能力有很大的帮助。
在课程的学习过程中,何岭松老师一直强调学以致用,在每一阶段给我们设置了一个任务,让我们带着问题去学习,从查找文献到提取有用信息,从软件安装到实际操作,从编程到最后的调试,在这一过程中我自主能动性被激发出来,迫使我克服一个有一个难题。
老师提倡的这种“无形”的自主学习方式,正是我接下来的研究生阶段发现问题——解决问题模式。
通过这样的一次训练,我对今如何进行学习研究有了清晰的理解,在这里向他表示感谢。
同时,在设计的完成过程中,我从实验室师兄那里得到了宝贵的建议和帮助,有时他们的一个字,一句话就让我有醍醐灌顶,茅塞顿开之感。
同时,寝室室友之间的交流也让我收益匪浅,在此一并表示诚挚的谢意。
参考文献[1] 车子萍. 基于Matlab的虚拟信号发生器设计. 电脑学习. 2010.2 No.1[2] 薛年喜.MATLAB在数字信号处理中的应用.[M] 北京:清华大学出版社,2005.[3] 唐向宏,岳恒立等. MATLAB及在电子信息类课程中的应用.[M] 北京:电子工业出版社,2005.8。