1 / 21

连续时间系统的时域分析

信号与系统实验二. 连续时间系统的时域分析. 主要内容. 2.1 信号的卷积 2 .2 信号的冲激响应、阶跃响应、零状态响应和零输入响应. 2.1 信号的卷积. MATLAB的内部函数conv()可以完成两个信号的卷积积分运算。语法为: y = conv(x,h) 其中x和h分别是两个作卷积运算的信号,y为卷积结果。 x = [1 2 3 4]; h = [4 3 2 1]; y=conv(x,h)  注意:

donagh
Download Presentation

连续时间系统的时域分析

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 信号与系统实验二 连续时间系统的时域分析

  2. 主要内容 2.1 信号的卷积 2.2 信号的冲激响应、阶跃响应、零状态响应和零输入响应

  3. 2.1 信号的卷积 MATLAB的内部函数conv()可以完成两个信号的卷积积分运算。语法为: y = conv(x,h) 其中x和h分别是两个作卷积运算的信号,y为卷积结果。 x = [1 2 3 4]; h = [4 3 2 1]; y=conv(x,h) 注意: 1) 在进行卷积时,conv函数实际上对两个离散信号进行卷积,而不是连续信号; 2) 系统默认卷积信号的值域从1开始,上例中,Matlab认为x(1)=1,h(1)=4。但通常卷积信号两个信号值域是任意的,不一定从1开始,因此实现连续信号的卷积运算需要做一些改动。

  4. 例如,对于定义在不同时间段的两个时限信号 x(t),t0 ≤ t ≤ t1 h(t),t2 ≤ t ≤ t3 卷积结果y(t)的持续时间范围为t0+t2 ≤ t ≤ t1+t3 根据这个特点,编制新的卷积程序sconv(),以便实现任意信号的卷积运算。函数如下:

  5. function [f,k]=sconv(f1,f2,k1,k2,p) % 计算连续信号卷积积分f(t)=f1(t)*f2(t) % f:卷积积分f(t)对应的非零值向量 % k:f(t)的对应时间向量 % f1,f2:f1(t),f2(t)的非零样值向量 % k1,k2:f1(t),f2(t)的对应时间向量 % p:取样时间间隔 f=conv(f1,f2); %计算序列f1,f2的卷积和f f=f*p; k0=k1(1)+k2(1); %计算序列f非零样值的起点位置 k3=length(f1)+length(f2)-2; %计算卷积和f的非零样值的宽度 k=k0:p:k0+k3*p; %确定卷积和f非零样值的时间向量 subplot(2,2,1); plot(k1,f1); title('f1(t)'); xlabel('t'); ylabel('f1(t)'); subplot(2,2,2); plot(k2,f2); title('f2(t)'); xlabel('t'); ylabel('f2(t)'); subplot(2,2,3); plot(k,f); %画出卷积f(t)的波形 title('f(t)=f1(t)*f2(t))'); xlabel('t'); ylabel('f(t)'); h=get(gca,'position'); h(3)=2.5*h(3); set(gca,'position',h) %将第三个子图的横坐标扩展为原来的2.5倍

  6. 例1:已知 f1(t) = e-t[(t) - (t-2)]、 f2(t) = (t) - (t-3),编制m文件,绘出f1(t)、f2(t)和f(t) = f1(t)* f2(t)的波形。 解:程序如下 p=0.01; k1=0:p:2; f1=exp(-k1); k2=0:p:3; f2= heaviside(k2)-heaviside(k2-4 ); [f,k]=sconv(f1,f2,k1,k2,p);

  7. 2.2信号冲激响应、阶跃响应、零状态响应和零输入响应2.2信号冲激响应、阶跃响应、零状态响应和零输入响应 MATLAB的内部函数dsolve,impulse,step,lsim可以方便地用来计算并绘制连续时间LTI系统的单位冲激响应,单位阶跃响应,零输入响应和任意信号作用于系统的零状态响应。以下分别给予介绍。

  8. 一、dsolve函数 连续时间系统可以使用常系数微分方程来描述,其完全响应由零输入响应和零状态响应组成。MATLAB符号工具箱提供了dsolve函数,可以实现对常系数微分方程的符号求解,其调用格式为: dsolve(‘eq1,eq2…’,’cond1,cond2,…’,’v’) 其中参数eq表示各个微分方程,它与MATLAB符号表达式的输入基本相同,导数的输入是使用Dy,D2y,D3y来表示y的一价导数,二阶导数,三阶导数;cond表示初始条件;v表示自变量,默认是变量t。 使用dslove函数可以求出系统微分方程的零输入响应和零状态响应,进而求出完全响应。

  9. 求零输入响应 例2:求齐次微分方程y’’’(t)+2y’’(t)+y’(t)=0的零输入响应,起始条件为y(0-)=1,y’(0-)=1,y’’(0-)=2 解:程序如下 eq = 'D3y+2*D2y+Dy=0'; cond = 'y(0)=1,Dy(0)=1,D2y(0)=2'; yzi = dsolve(eq,cond) ezplot(yzi)

  10. 求零状态响应 例3:已知输入x(t)=(t),求齐次微分方程y’’’(t)+4y’’(t)+8y’(t)=3x’(t)+8x(t)的零状态响应 解:根据题意,理解为求解两个方程 y’’’(t)+4y’’(t)+8y’(t)=3x’(t)+8x(t)和x(t)=(t) 程序如下: eq1 = 'D3y+4*D2y+8*Dy=3*Dx+8*x'; eq2 = 'x=heaviside(t)'; cond = 'y(-0.01)=0,Dy(-0.01)=0,D2y(-0.01)=0'; yzs = dsolve(eq1,eq2,cond) ezplot(yzs.y)

  11. 求全响应 例4:已知齐次微分方程y’’(t)+3y’(t)+2y(t)=x’(t)+3x(t),当输入为x(t)=e-3t(t),起始条件为y(0-)=1,y’(0-)=2时系统的零输入响应、零状态响应以及完全响应 解:先求零输入响应,程序如下: %零输入响应 eq = 'D2y+3*Dy+2*y=0'; cond = 'y(0)=1,Dy(0)=2'; yzi = dsolve(eq,cond) subplot(3,1,1),ezplot(yzi,[0 8]) %零状态响应 eq1 = 'D2y+3*Dy+2*y=Dx+3*x'; eq2 = 'x=exp(-3*t)*heaviside(t)'; cond = 'y(-0.01)=0,Dy(-0.01)=0'; yzs = dsolve(eq1,eq2,cond) subplot(3,1,2),ezplot(yzs.y,[0 8]) %全响应 yall = yzi + yzs.y subplot(3,1,3),ezplot(yall,[0 8])

  12. 二、lsim函数 对于零状态响应,MATLAB提供了对LTI系统的零状态响应进行数值仿真的函数lsim,可以求解零初始条件下的微分方程的数值求解。其调用格式为: y=lsim(sys,f,t) t表示系统响应的时间抽样点向量,f是系统的输入向量;sys表示LTI系统模型,用来表示微分方程、差分方程或状态方程。在求解微分方程时,sys是由tf函数根据微分方程系数生成的系统函数对象,其语句格式为:sys=tf(a,b)。其中,a和b分别为微分方程右端和左端的系数向量。

  13. 对于如下微分方程 可以使用 获得其LTI模型。 注意:如果微分方程的左端或者右端表达式有缺项,则其向量a或者b中对应元素应该为零,不能省略不写。

  14. 例,某LTI系统的微分方程为y’’(t)+5y’(t)+6y(t)=6x(t),其中x(t)=10sin(2t)(t)。求出0~5范围内的零状态响应。例,某LTI系统的微分方程为y’’(t)+5y’(t)+6y(t)=6x(t),其中x(t)=10sin(2t)(t)。求出0~5范围内的零状态响应。 解:程序为: ts = 0; te = 5; dt= 0.01; a = [1,5,6]; b=[6]; sys = tf(b,a); t = ts:dt:te; f = 10*sin(2*pi*t).*heaviside(t); y = lsim(sys,f,t); plot(t,y),grid on xlabel('Time(秒)'),ylabel('y(t)'); title('零状态响应');

  15. 三、impulse函数 函数impulse()将绘出由向量a和b表示的连续系统在指定时间内的冲激响应h(t)的时域波形图,并能求出指定时间范围内冲激响应的数值解。impulse() 函数有如下几种调用格式: 1. impulse(b,a) 该调用格式以默认方式绘出向量a和b定义的连续系统的冲激响应的时域波形。例如,对于微分方程 y’’(t)+3y(t)+2y(t)=f’’(t)+f(t), 可运行如下命令: a=[1 3 2]; b=[1 0 1]; impulse(b,a);

  16. 2. impulse(b,a,t) 该调用格式绘出向量a和b定义的连续系统在0~t时间范围内冲激响应的时域波形。对上例的微分方程y’’(t)+3y’(t)+2y(t)=f’’(t)+f(t) ,运行如下命令: impulse(b,a,10) 则绘出系统在0~10秒范围内冲激响应的时域波形。

  17. 3. impulse(b,a,t1:p:t2) 该调用格式绘出向量a和b定义的连续系统在t1~t2时间范围内,且以时间间隔p均匀取样 的冲激响应的时域波形。对上例,运行如下命令: impulse(b,a,1:0.1:2) 则绘出系统在1~2秒范围内, 且以时间间隔0.1秒均匀取样的冲激响应的时域波形。

  18. 4. y=impulse(b,a,t1:p:t2) 该调用格式并不绘出系统的冲激响应波形,而是求出向量a和b定义的连续系统在t1~t2时间范围内,且以时间间隔p均匀取样的冲激响应的数值解。例如,求时间0~2范围内的冲激响应如下: y=impulse(b,a,0:0.2:2)

  19. 四、step函数 函数step()将绘出由向量a和b定义的连续系统的阶跃响应g(t)在指定时间范围内的波形图,并能求出其数值解。和step()函数一样, step()函数也有四种调用格式: step(b,a) step(b,a,t) step(b,a,t1:p:t2) y=step(b,a,t1:p:t2) 上述调用格式的功能与impulse()函数完全相同。

  20. 例, LTI系统的微分方程为y’’(t)+2y’(t)+32y(t)=x’(t)+16x(t),绘出0~4范围内的冲激响应和阶跃响应。 t=0:0.001:4; sys=tf([1,16],[1,2,32]); h=impulse(sys,t); g=step(sys,t); subplot(2,1,1) plot(t,h) xlabel(‘Time(秒)'),ylabel('y(t)'); title('冲激响应'); subplot(2,1,2) plot(t,g) xlabel('Time(秒)'),ylabel('g(t)'); title('阶跃响应');

  21. 作业 1. 求以下两个函数的卷积 2. 已知系统的微分方程和激励信号,使用MATLAB命令画出系统的零输入响应和零状态响应 3. 已知系统的微分方程,使用MATLAB命令画出系统的冲激响应和阶跃响应

More Related