《实验1利用matlab进行系统的时域分析.docx》由会员分享,可在线阅读,更多相关《实验1利用matlab进行系统的时域分析.docx(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date实验1 利用matlab进行系统的时域分析实验1 利用matlab进行系统的时域分析 实验1 利用matlab进行系统的时域分析一 实验目的:1 了解离散时间序列卷积和的matlab实现;2 利用卷积和求解系统的零状态响应;二 实验原理:1 连续时间系统零状态响应的求解 连续时间LTI系统以常系数微分方程描述,系统的零状态响应可通过求解初始状态为零的微分方程得到。在M
2、ATLAB中,控制系统工具箱提供了一个用于求解零初始状态微分方程数值解的函数lsim。其调用方式为y= lsim( sys,x,t)式中t表示计算系统响应的抽样点向量,x是系统输入信号向量,sys是连续时间LTI系统模型,用来表示微分方程、差分方程、状态方程。在求解微分方程时,微分方程的连续时间LTI系统模型sys要借助tf函数获得,其调用方式为sys= tf(b,a) 式中b和a分别为微分方程右端和左端各项的系数向量。例如对3阶微分方程 a3y3(t)+a2y2(t)+a1y(t)+ a0y(t)= b3y3(t)+b2y2(t)+b1y(t)+b0y(t)可用a= a3, a2, a1,
3、a0;b=b3 ,b2, b1,b0; sys=tf( b,a)获得连续时间LTI模型。注意微分方程中为零的系数一定要写入向量a和b中。【例2-1】描述某力学系统中物体位移y(t)与外力f(t)的关系为 md2y(t)dt2+fddy(t)dt+ksy(t)=x(t)物体质量m=l kg,弹簧的弹性系数ks= 100 N/m,物体与地面的摩擦系数fd=2 Ns/m,系统的初始储能为零,若外力x(t)是振幅为10、周期为1的正弦信号,求物体的位移y(t)。 解:由已知条件,系统的输入信号为x(t)=10sin(2t),系统的微分方程为 d2y(t)dt2+2dy(t)dt+100y(t)=x(t
4、)计算物体位移y(t)的MATLAB程序如下:%program2_1微分方程求解ts=0;te=5;dt=0.01;sys=tf(1,1 2 100);t=ts:dt:te;x=10*sin(2*pi*t);y=lsim(sys,x,t);plot(t,y);xlabel(Time(sec)ylabel(y(t)图2-1系统的零状态响应2.连续时间系统冲激响应和阶跃响应的求解在MATLAB中,求解系统冲激响应可应用控制系统工具箱提供的函数impulse,求解阶跃响应可利用函数step。其调用方式为y= impulse( sys,t)y= step( sys,t)式中t表示计算系统响应的抽样点向
5、量,sys是连续时间LTI系统模型。下面举例说明其应用。 【例2-2】在例2-1所述力学系统中,若外力x(t)是强度为10的冲激信号,求物体的位移y(t)。解:由已知条件,系统的输入信号为x(t)=10(t),系统的微分方程可写成: d2h(t)dt2+2dh(t)dt+100h(t)=10(t) 物体位移y(t)即系统的冲激响应,计算其的MATLAB程序如下: %program3_2连续时间系统的冲激响应clearclcts=0;te=5;dt=0.01;sys=tf(10,1 2 100);t=ts:dt:te;y=impulse(sys,t);plot(t,y);xlabel(Time(
6、sec)ylabel(h(t)图2-2 连续时间系统的冲激响应3.离散的时间系统零状态相应的求解大量的离散时间LTI系统都可以用如下的线性常系数差分方程描述: i=0naiyk-i=j=0mbjxk-j其中a0=1,xk、yk分别表示系统的输入和输出,n是差分方程的阶数。已知差分方程的n个初始状态和输入xk,就可以编程由下式迭代计算出系统的输出: yk=- i=1naiyk-i + j=0mbjxk-j在零初始状态下,MATLAB信号处理工具提供了一个filter函数计算由差分方程描述的系统的响应。其调用方式为:y= filter(b,a,x)式中b=b0,bl,b2,bM,a=a0,a1,a
7、2,aN分别是差分方程左、右端的系数向量,x表示输入序列,y表示输出序列。注意输出序列的长度和输入序列长度相同。【例2-3】受噪声干扰的信号为xk=sk+dk,其中sk=(2k)0.9是原始信号,dk是噪声。已知M点滑动平均( Moving Average)系统的输入与输出关系为 yk = 1Mn=0M-1xk-n试编程实现M点滑动平均系统对受噪声干扰的信号去噪。 解:系统的输入信号xkl含有有用信号sk和噪声信号dk。噪声信号dk可以用rand函教产生,将其叠加在有用信号sk上,即得到受噪声干扰的输入信号xk。下面的程序实现了对信号xk去噪,取M=5。 % program2_3 Signal
8、 Smoothing by Moving Average FilterclearclcR=51;d=rand(1,R)-0.5;k=0:R-1;s=2*k.*(0.9.k);x=s+d;figure(1);plot(k,d,r-.,k,s,b-,k,x,g-);xlabel(Time index k);legend(dk,sk,xk);M=5;b=ones(M,1)/M;a=1;y=filter(b,a,x);figure(2);plot(k,s,b-,k,y,g-);xlabel(Time index k);legend(sk,yk);图2-3M点滑动平均系统对噪声干扰信号的去噪程序运行的结
9、果如图3 - 25所示。图3- 25(a)中3条曲线分别为噪声信号dk、有用信号sk和受噪声干扰的输入信号xk。图3-25 (b)中。sk为有用信号,yk是经过5点滑动平均系统去噪的结果。比较这两条曲线可以看出,yk与sk波形除了有的延迟外,基本上是相似的,这说明yk中的噪声信号被抑制,M点滑动平均系统实现了对受噪声干扰信号的去噪。4.离散时间系统单位脉冲响应的求解 在MATLAB中,求解离散时间系统单位脉冲响应,可应用信号处理工具箱提供的函数impz,其调用方式为h= impz(b,a,k)式中b=b0,b1,b2,bN,a=a0,a1,a2,aN分别是差分方程左、右端的系数向量,k表示输出
10、序列的取值范围,h就是系统的单位脉冲响应。【例2-4】用impz函数求离散时间LTI系统6yk+5yk-1+yk-2=10xk的单位脉冲响应hk。解:MATLAB程序如下:%program3_4 离散系统地单位脉冲响应clearclck=0:10;a=6 5 1;b=10;h=impz(b,a,k);stem(k,h)图2-4离散系统的单位脉冲响应5.离散卷积的计算 卷积是用来计算系统零状态响应的有力工具。MATLAB信号处理工具箱提供了一个计算两个离散序列卷积和的函数conv,其调用方式为c= conv(a,b)式中a,b为待卷积两序列的向量表示,c是卷积结果。向量c的长度为向量a,b长度之
11、和减一,即length(c):length(a)+length(b) -1。【例2-5】已知序列xk=1,2,3,4;k=0,1,2,3,yk=1,l,1,1,1;k=0,1,2,3,4,计算xk*yk并画出卷积结果。 解:MATLAB程序如下:% program2_5 clear clcx=1,2,3,4;y=1,1,1,1,1;z=conv(x,y);N=length(z);stem(0:N-1,z); 图2-5 离散序列的卷积Conv函数也可以用来计算两个多项式的积。例如多项式和的乘积可通过下面的MATLAB 语句求出: a=l,0,2,3; b=l,3,2; c= conv(a,b)语句a=1,0,2,3和b=l,3,2分别是多项式和的向量表示。注意,在用向量表示多项式时,应将多项式各项包括零系数项的系数均写入向量的对应元素中。如多项式中2次方的系数为零,故向量a的第2个元素也为零。如果表示成a=l,2,3,则计算机将认为表示的多项式为s +2s +3。上面语句运行的结果为c= 1 3 4 9 13 6即 三 实验内容:1 使用matlab计算如下序列和的卷积和,绘出他们的时域波形。 2 已知某LTI离散系统,其单位响应,求该系统在激励为时的零状态响应,并绘出其时域波形。四 思考题:1 分析实验内容1中序列和的时域宽度与的时域宽度的关系。-
限制150内