第4章MATLAB在信号处理中的应用第4章MATLAB在信号处理中的应用4.1信号及其表示4.2信号的基本运算4.3信号的能量和功率4.4线性时不变系统4.5线性时不变系统的响应4.6线性时不变系统的频率响应4.7傅里叶(Fourier)变换4.8IIR数字滤波器的设计方法4.9FIR数字滤波器设计第4章MATLAB在信号处理中的应用4.1信号及其表示4.1.1连续时间信号的表示连续时间信号:时间变化连续。如y=x(t)离散时间信号(序列):时间离散,如x(nT)=x(t)|t=nT.pipipxx4.1.2工具箱中的信号产生函数函数名功能函数名功能sawtooth产生锯齿波或三角波信号pulstran产生冲激串square产生方波信号rectpule产生非周期的方波信号sinc产生sinc函数波形tripuls产生非周期的三角波信号chirp产生调频余弦信号diric产生Dirichlet或周期sinc函数gauspuls产生高斯正弦脉冲信号gmonopuls产生高斯单脉冲信号vco电压控制振荡器第4章MATLAB在信号处理中的应用4.1.3离散时间信号的表示在MATLAB中,离散时间信号x(n)的表示:需用一个向量x表示序列幅值,用另一个等长的定位时间变量n,才能完整地表示一个序列。[例4-10]绘制离散时间信号的棒状图。其中x(-1)=-1,x(0)=1,x(1)=2,x(2)=1,x(3)=0,x(4)=-1。MATLAB源程序为:n=-3:5;%定位时间变量x=[0,0,-1,1,2,1,-1,0,0];stem(n,x);grid;%绘制棒状图line([-3,5],[0,0]);%画x轴线xlabel('n');ylabel('x[n]')运行结果如图4.11所示。图4.11离散时间信号图形第4章MATLAB在信号处理中的应用4.1.4几种常用离散时间信号的表示1.单位脉冲序列直接实现:x=zeros(1,N);x(1,n0)=1;00001)(nnnnnn2.单位阶跃序列00001)(nnnnnnu直接实现:n=[ns:nf];x=[(n-n0)=0];第4章MATLAB在信号处理中的应用3.实指数序列nanx)(nRa直接实现:n=[ns:nf];x=a.^n;4.复指数序列njenx)()(直接实现:n=[ns:nf];x=exp((sigema+jw)*n);5.正(余)弦序列)cos()(nnx直接实现:n=[ns:nf];x=cos(w*n+sita);第4章MATLAB在信号处理中的应用4.2信号的基本运算4.2.1信号的相加与相乘y(n)=x1(n)+x2(n)y(n)=x1(n)×x2(n)MATLAB实现:y=x1+x2;y=x1.*x24.2.2序列移位与周期延拓运算序列移位:y(n)=x(n-m)。MATLAB实现:y=x;ny=nx-m序列周期延拓:y(n)=x((n))M,MATLAB实现:ny=nxs:nxf;y=x(mod(ny,M)+1)4.2.3序列翻褶与序列累加运算序列翻褶:y(n)=x(-n)。MATLAB可实现:y=fliplr(x)序列累加的数学描述为:nnisixny)()(MATLAB实现:y=cumsum(x)第4章MATLAB在信号处理中的应用4.2.4两序列的卷积运算两序列卷积运算:mmnxmxnxnxny)()()()()(2121MATLAB实现:y=conv(x1,x2)。序列x1(n)和x2(n)必须长度有限。4.2.5两序列的相关运算两序列相关运算:nmnxnxmy)()()(21。MATLAB实现:y=xcorr(x1,x2)。第4章MATLAB在信号处理中的应用4.3信号的能量和功率NnnxnxE0][*][102][1NnnxNP1.信号能量数字定义:MATLAB实现:E=sum(x.*conj(x));或E=sum(abs(x).^2);数字定义:2.信号功率MATLAB实现:P=sum(x.*conj(x))/N;或E=sum(abs(x).^2)/N;第4章MATLAB在信号处理中的应用4.4线性时不变系统4.4.1系统的描述1.常系数线性微分/差分方程1()()()00()()()NMNiiiiiiytaytbxt2.系统传递函数11101110()()()MMMMNNNbsbsbsbYsHsXssasasaNMMMzazaazbzbbzXzYzH110110)()()(3.零-极点增益模型连续系统:连续系统:1212()()()()()()()MNsqsqsqHskspspsp离散系统:1212()()()()()()()MNzqzqzqHzkzpzpzp离散系统:第4章MATLAB在信号处理中的应用4.极点留数模型离散系统:连续系统:NNpsrpsrpsrsH2211)(1122111111)(zprzprzprzHNN5.二次分式模型20122112()1LkkkkkkbbsbsHsgasas连续系统:离散系统:1201212112()1LkkkkkkbbzbzHzgazaz6.状态空间模型DuCxyBuAxx'[1][][][][][]xnAxnBunynCxnDun连续系统:离散系统:第4章MATLAB在信号处理中的应用4.4.2系统模型的转换函数在MATLAB中,用sos、ss、tf、zp分别表示二次分式模型、状态空间模型、传递函数模型和零-极点增益模型。其中sos表示二次分式,g为比例系数,sos为L×6的矩阵,即01112111210121211LLLLLbbbaasosbbbaa(4-15)1.ss2tf函数格式:[num,den]=ss2tf(A,B,C,D,iu)功能:将指定输入量iu的线性系统(A,B,C,D)转换为传递函数模型[num,den]。2.zp2tf函数格式:[num,den]=zp2tf(z,p,k)功能:将给定系统的零-极点增益模型转换为传递函数模型,z、p、k分别为零点列向量、极点列向量和增益系数。第4章MATLAB在信号处理中的应用线性系统模型的变换函数函数名功能说明函数名功能说明ss2tf状态空间模型转换为传递函数模型zp2tf零-极点增益模型转换为传递函数模型ss2zp状态空间模型转换为零-极点增益模型zp2ss零-极点增益模型转换为状态空间模型ss2sos状态空间模型转换为二次分式模型zp2sos零-极点增益模型转换为二次分式模型tf2ss传递函数模型转换为状态空间模型sos2tf二次分式模型转换为传递函数模型tf2zp传递函数模型转换为零-极点增益模型sos2zp二次分式模型转换为零-极点增益模型tf2sos传递函数模型转换为二次分式模型sos2ss二次分式模型转换为状态空间模型第4章MATLAB在信号处理中的应用[例4-18]求离散时间系统2114.0132)(zzzzH的零、极点向量和增益系数。在命令窗口输入:num=[2,3];den=[1,0.4,1];[num,den]=eqtflength(num,den);%使长度相等[z,p,k]=tf2zp(num,den)屏幕显示为z=0-1.5000p=-0.2000+0.9798i-0.2000-0.9798ik=2第4章MATLAB在信号处理中的应用4.4.3系统互联与系统结构MATLAB实现函数series()格式:[A,B,C,D]=series(A1,B1,C1,D1,A2,B2,C2,D2)或[num,den]=series(num1,den1,num2,den2)将系统1、系统2级联,可得到级联连接的传递函数形式为:)(2)(1)(2)(1)()()()()(21sdensdensnumsnumsHsHsdensnumsH1.系统的级联第4章MATLAB在信号处理中的应用MATLAB实现函数parallel()格式:[A,B,C,D]=parallel(A1,B1,C1,D1,A2,B2,C2,D2)或[num,den]=parallel(num1,den1,num2,den2))(2)(1)(1)(2)(2)(1)()()()()(21sdensdensdensnumsdensnumsHsHsdensnumsH2.系统的并联将系统1、系统2并联,可得到并联连接的传递函数形式为:3.两个系统的反馈连接函数feedback格式:[A,B,C,D]=feedback(A1,B1,C1,D1,A2,B2,C2,D2,sign)或[num,den]=feedback(num1,den1,num2,den2,sign)将系统1和系统2进行反馈连接,sign表示反馈方式(默认值为-1);当sig=+1时表示正反馈;当sig=-1时表示负反馈。第4章MATLAB在信号处理中的应用[例4-19]求两个单输入单输出子系统11)(1ssH22)(2ssH的级联、并联和反馈后系统的传递函数。MATLAB源程序为:num1=1;den1=[1,1];%系统1num2=2;den2=[1,2];%系统2[nums,dens]=series(num1,den1,num2,den2)%实现两个系统级联[nump,denp]=parallel(num1,den1,num2,den2)%实现两个系统并联[numf,denf]=feedback(num1,den1,num2,den2)%实现两个系统反馈程序运行结果为:nums=002;dens=132nump=034;denp=132numf=012;denf=134因此,各系统的传递函数分别为:2322ss23432sss2322sss第4章MATLAB在信号处理中的应用4.5线性时不变系统的响应4.5.1线性时不变系统的时域响应1.连续LTI系统的响应2.离散LTI系统的响应dthxthtxtxTty)()()(*)()()(用MATLAB中的卷积函数conv()来实现。mmnhmxnhnxny)()()()()(用MATLAB中的卷积函数conv()来实现。第4章MATLAB在信号处理中的应用格式:[y,x]=lsim(a,b,c,d,u,t)功能:返回连续LTI系统(2)对任意输入的离散LTI系统响应函数dlsim()格式:[y,x]=dlsim(a,b,c,d,u)功能:返回离散LTI系统'()()()()()()xtaxtbutytcxtdut对任意输入时系统的输出响应y和状态记录x,其中u给出每个输入的时序列,一般情况下u为一个矩阵;t用于指定仿真的时间轴,它应为等间隔。[1][][][][][]xnaxnbunyncxndun对输入序列u的响应y和状态记录x。3.时域响应函数(1)对任意输入的连续LTI系统响应函数lsim()第4章MATLAB在信号处理中的应用4.5.2LTI系统的单位冲激响应1.求连续LTI系统的单位冲激响应函数impulse()格式:[Y,T]=impulse(sys)或impulse(sys)功能:返回系统的响应Y和时间向量T,自动选择仿真的时间范围。其中sys可为系统传递函数、零极增益模型或状态空间模型。2.求离散系统的单位冲激响应函数dimpulse()格式:[y,x]=dimpulse(num,den)功能:返回项式传递函数的单位冲激响应y向量和时间状态历史记录x向量。()()/()gznumzdenz第4章MATLAB在信号处理中的应用4.5.3时