您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > MATLAB在信号与系统中的应用解读
第2章MATLAB在信号与系统中的应用在信号与线性系统分析中涉及的信号的傅里叶变换、拉普拉斯变换等内容是MATLAB在通信原理、数字信号处理、数字图像处理等课程中应用的基础。本章通过连续、离散信号的表示及可视化、信号的卷积和、信号的自相关函数、互相关函数、傅里叶变换、功率谱估计、拉普拉斯变换、系统的零极点分析等实例展示了在MATLAB中进行信号与系统知识的仿真的基本方法和基本原理。【本章知识架构】2.1典型连续信号的时域表示及可视化1.实验目的•(1)掌握信号的MATLAB表示方法。•(2)利用MATLAB实现信号的时域运算与时域变换。2.实验原理在MATLAB中通常用到两种方法来表示信号:一种是向量表示信号;另一种是用符号运算的方法来表示信号。用适当的MATLAB表示出信号后,就可以利用MATLAB的绘图命令绘出真正的信号波形。【例1】用MATLAB画出信号f(t)=ε(t+3)-2ε(t)的波形,如图2.3所示。•f=sym('heaviside(t+3)-2*Heaviside(t)')•ezplot(f,[-5,4]),•holdon保留当前图形及坐标属性,以便下一条绘图语句继续在当前图形窗口上绘图•plot([0,0],[-1,1]),•axis([-5,4,-1,1.1])•holdoff恢复至默认模式,即plot语句在绘制下一个图形之前擦除原来的绘图及坐标属性在MATLAB中还提供一些图形函数,专门用于对plot命令所画出图形进行修饰。如坐标范围设定(axis命令)、加坐标轴名称(xlabel,ylabel命令)、给图形加标题(title命令)、绘网格(grid命令)、对图形进行文字标注(text命令)。图2.3单位阶跃信号在MATLAB中可以在同一个坐标中画出多幅图形。但plot命令在执行时首先将当前图像窗口清屏,用户看到的是最后一条命令绘制的图形。MATLAB提供了hold命令,将当前图形窗口的图形保留,利用多条plot命令绘制多幅图形。holdon命令:保留当前窗口的图形。holdoff命令:解除holdon命令。•注意:观察axis、title、text这3个语句的应用。•t=0:0.05:3;•f=exp(-1.5*t);•plot(t,f)•axis([0,3,0,1.2])•title('单边指数信号')•text(3.1,0.05,'t')•(2)用符号函数sgn(t)来生成单位阶跃函数。ε(t)=1/2+(1/2)sgn(t),而sgn(t)的表示可•调用MATLAB中的符号函数sign来实现:•t=-5:0.05:3;•f=sign(t);•然后,用下面的命令就可以绘出符号函数的波形(执行结果如图2.5所示):•plot(t,f)•axis([-5,5,-1.1,1.1])图2.5符号函数的波形再用以下的命令表示单位阶跃信号并绘出它的波形(执行结果如图2.6所示)。•ff=1/2+1/2*f;•plot(t,ff),axis([-5,5,-1.1,1.1])图2.6用符号函数画出的单位阶跃信号单位冲激信号2.2典型离散信号的时域表示及可视化1.实验目的•(1)掌握MATLAB语言的基本操作,学习基本的编程功能。•(2)熟悉连续信号经过采样前后的频谱变化,加深对采样定理的理解。2.实验原理一般来说,离散时间信号用f(k)表示,其中变量k为整数,代表离散的采样时间点。在MATLAB中,用一个向量f即可表示一个有限长度序列。但是这样的向量并没有包含其对应的时间序列信息。所以,要完整地表示离散信号需要用两个向量。•在MATLAB表示离散序列并将其可视化时,要注意以下几点:①与连续时间信号不同,离散时间信号无法用符号运算来表示;②由于在MATLAB中,矩阵的元素个数是有限的,因此MATLAB无法表示无限序列;③在绘制离散信号波形时,要用专门的绘制离散数据的stem命令。•离散信号的图形显示使用stem指令。•编写MATLAB程序,产生下列典型脉冲序列。•(1)单位抽样序列。•(2)单位阶跃序列。•(3)正弦序列。•(4)实指数序列:•3x=(0.75)n。•(5)复指数序列:(0.2j0.7)•4x=e−+n。•4.程序代码•1)单位抽样序列•functiondwxulie(k1,k2,k0)•k=k1:k2;•n=length(k);•f=zeros(1,n);•f(1,-k0-k1+1)=1•stem(k,f,'filled')•axis([k1,k2,0,1.5])•title('单位序列δ(k)')3.仿真思路•2)单位阶跃序列•functiondwjieyuexulie(k1,k2,k0)•k=k1:-k0-1;•kk=-k0:k2;•n=length(k);•nn=length(kk);•u=zeros(1,n);•uu=ones(1,nn);•stem(kk,uu,'filled')•holdon•stem(k,u,'filled')•holdoff•axis([k1,k2,0,1.5])•title('单位阶跃序列')•3)正弦序列•functionzhengxuanxulie()•k=0:40;•subplot(2,1,1)•stem(k,cos(k*pi/8),'filled')•title('cos(k*pi/8)')•subplot(2,1,2)•stem(k,cos(k*2),'filled')•title('(cos(k*2))')•4)实指数、复指数序列•functionzhishuxulie()•n0=0;nf=10;ns=3;•n3=n0:nf;x3=(0.75).^n3;%实指数序列•n4=n0:nf;x4=exp((-0.2+0.7j)*n4);%复指数冲序列•stem(n3,x3);%画出实指数序列的图•title('实指数序列')•figure•subplot(2,2,1),stem(n4,real(x4));%复指数序列的实部•title('复指数序列实部')•subplot(2,2,2),stem(n4,imag(x4));%复指数序列的虚部•title('复指数序列虚部')•subplot(2,2,3),stem(n4,abs(x4));%复指数序列的幅度•title('复指数序列幅度')•subplot(2,2,4),stem(n4,angle(x4));%复指数序列的相位•title('复指数序列相位')5.运行结果与分析单位抽样序列如图2.9所示(函数调用方式为dwxulie(-5,5,3))。图2.9单位抽样序列单位阶跃序列如图2.10所示(函数调用方式为dwjieyuexulie(-5,5,3))。图2.10单位阶跃序列正弦序列如图2.11所示(函数调用方式为zhengxuanxulie())。图2.11正弦序列•实指数离散序列如图2.12所示(函数调用方式为zhishuxulie())。图2.12实指数离散函数•复指数序列实部、虚部、幅度、相位如图2.13所示。图2.13复指数序列实部、虚部、幅度、相位6.思考题•(1)要得到ε(k−3)该调用哪个函数?如何调用?•(2)例中给出的两个正弦序列是周期序列吗?为什么?2.3信号的时域运算1.实验目的(1)了解信号常用的时域运算。(2)了解信号的时域运算在MATLAB中的实现方法。2.实验原理1)连续信号的时域运算与变换f1、f2是两个用符号表达式表示的连续信号,s、w、y均为运算或变换后得到的符号表达式。(1)相加•s=symadd(f1,f2)或s=f1+f2•ezplot(s)(2)相乘•w=symmul(f1,f2)或w=f1*f2•ezplot(w)(3)移位•y=subs(f,t,t-t0);•ezplot(y)(4)反折•y=subs(f,t,-t);•ezplot(y)(5)尺度变换•y=subs(f,t,a*t);•ezplot(y)•对于以上命令,可在画图命令之后加入坐标轴的调整axis等命令,以使画出的图形更清晰、直观。2)离散序列的时域运算及变换对于离散序列来说,序列的相加、相乘是将两序列时间信号的值相加或相乘,平移等变换与连续信号的定义完全相同。但要注意的是,在MATLAB中,离散序列的相加、相乘需表示成两个序列的相加、相乘,因而参加运算的两序列必须有相同的维数。3.仿真思路在序列求和的函数中,将要进行相加运算的两序列向量通过补零的方式成为同维数的两序列向量,因而在调用函数时,要进行相加运算的两序列向量维数可以不同。向量的反折可用MATLAB中的fliplr函数来实现。•k=-3:3;•f=2.^k;•lsfz(f,k)•%注意比较两次出现波形的异同4)离散序列平移•function[f,k]=lsyw(ff,kk,k0)•k=kk-k0;f=ff;•subplot(2,1,1);•stem(kk,ff,'filled')•axis([min(min(kk),min(kk))-1,•max(max(kk),max(k))+1,min(ff)-0.5,max(ff)+0.5]);•title('原始序列');•subplot(2,1,2);•stem(k,f,'filled')•axis([min(min(kk),min(kk))-1,•max(max(kk),max(k))+1,min(f)-0.5,max(f)+0.5])•title('平移后的序列');5.运行结果与分析图2.15序列相乘及其结果可视化图2.14序列相加及其结果可视化•序列反折及其可视化如图2.16所示。图2.16序列反折及其结果可视化•序列平移及其可视化如图2.17所示。为了更清楚地显示序列的变换,画图时对坐标轴的选取非常重要,这关系到结果可视化的直观性。注意分析在以上程序中,是如何选取坐标轴的范围的。图2.17序列平移及其结果可视化2.4离散序列的卷积和•1.实验目的•(1)了解卷积和的概念。•(2)用conv函数计算卷积和。•(3)通过MATLAB仿真对卷积过程有感性认识。【例5】试用MATLAB计算如下算式序列的卷积和f(k),绘出它们的时域波形。•f1(k)={1210},f2(k)={111110}•解:该问题可用dconv()函数来解决,实现这一过程的命令如下。•f1=[121];•k1=[-101];•f2=ones(1,5);•k2=-2:2;•[f,k]=dconv(f1,f2,k1,k2)4.运行结果与分析•离散序列的卷积和如图2.18所示。由图可见,conv函数能正确计算两个离散序列的卷积和。本例的难点在于卷积和起止坐标的计算。只有正确计算坐标,画出来的图才是正确的。图2.18离散序列的卷积和5.思考题•(1)已知某LTI离散系统,其单位响应h(k)=ε(k)-ε(k−4),求该系统在激励为f(k)=ε(k)−ε(k−3)时的零状态响应y(k),并绘出其时域波形图。•(2)如果上题h(k)=ε(k),重做上题。(提示:时间序列无限长时,必须将其进行截断,如只保留100个样值点)观察计算结果,所有计算样值均是真实的吗?•(3)编写连续系统卷积计算的子程序。2.5连续信号的卷积积分1.实验目的•(1)熟悉MATLAB软件平台。•(2)掌握MATLAB编程方法、常用语句和可视化绘图技术。•(3)编程实现常用信号及其运算MATLAB实现方法。2.实验原理连续信号是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干个不连续点之外,信号都有确定的值与之对应。严格来说,MATLAB并不能处理连续信号,而是用等时间间隔点的样值来近似表示连续信号。当取样时间间隔足够小时,这些离散的样值就能较好地近似连续信号。由于MATLAB运算的特点,两个连续信号f1(t)、f2(t)的卷积f(t)=f1(t)*f2(t),用MATLAB实现的过程如下。•(1)将连续信号f1(t)、f2(t)以时间间隔Δ进行取样,得离散序列f1(k)、f2(k)。•(2)构造f1(k)、f2(k)与
本文标题:MATLAB在信号与系统中的应用解读
链接地址:https://www.777doc.com/doc-3382919 .html