实验三 连续时间LTI系统的时域分析
一、实验目的
1、学会使用符号法求解连续系统的零输入响应和零状态响应 2、学会使用数值法求解连续系统的零状态响应
3、学会求解连续系统的冲激响应和阶跃响应 二、实验原理及实例分析
1、连续时间系统零输入响应和零状态响应的符号求解
连续时间系统可以使用常系数微分方程来描述,其完全响应由零输入响应和零状态响应组成。MATLAB符号工具箱提供了dsolve函数,可以实现对常系数微分方程的符号求解,其调用格式为:
dsolve(‘eq1,eq2…’,’cond1,cond2,…’,’v’)
其中参数eq表示各个微分方程,它与MATLAB符号表达式的输入基本相同,微分和导数的输入是使用Dy,D2y,D3y来表示y的一价导数,二阶导数,三阶导数;参数cond表示初始条件或者起始条件;参数v表示自变量,默认是变量t。通过使用dsolve函数可以求出系统微分方程的零输入响应和零状态响应,进而求出完全响应。
2、连续时间系统零状态响应的数值求解
在实际工程中使用较多的是数值求解微分方程。对于零输入响应来说,其数值解可以通过函数initial来实现,而该函数中的参量必须是状态变量所描述的系统模型,由于现在还没有学习状态变量相关内容,所以此处不做说明。对于零状态响应,MATLAB控制系统工具箱提供了对LTI系统的零状态响应进行数值仿真的函数lsim,利用该函数可以求解零初始条件下的微分方程的数值解。其调用格式为:y=lsim(sys,f,t),其中t表示系统响应的时间抽样点向量,f是系统的输入向量;sys表示LTI系统模型,用来表示微分方程、差分方程或状态方程。在求解微分方程时,sys是有tf函数根据微分方程系数生成的系统函数对象,
1 / 4
其语句格式为:sys=tf(a,b)。其中,a和b分别为微分方程右端和左端的系数向量。例如,对于微分方程
a3y'''(t)?a2y''(t)?a1y'(t)?a0y(t)?b3f'''(f)?b2f''(t)?b1f'(t)?b0f(t) 可以使用a?[a3,a2,a1,a0];b?[b3,b2,b1,b0];sys?tf(b,a)获得其LTI模型。注意,如果微分方程的左端或者右端表达式有缺项,则其向量a或者b中对应元素应该为零,不能省略不写。
3、连续时间系统冲激响应和阶跃响应的求解
在连续时间LTI系统中,冲激响应和阶跃响应是系统特性的描述。在 MATLAB中,对于冲激响应和阶跃响应的数值求解,可以使用控制工具箱中提供的函数impulse和step来求解。 y?impulse(sys,t)y?step(sys,t)
其中t表示系统响应的时间抽样点向量,sys表示LTI系统模型。 三、实验环境
本次实验使用的是Matlab软件,连续时间系统可以使用常系数微分方程来 描述,其完全响应由零输入响应和零状态响应组成。MATLAB符号工具箱提供了dsolve函数,可以实现对常系数微分方程的符号求解,MATLAB控制系统工具箱提供了对LTI系统的零状态响应进行数值仿真的函数lsim函数,冲激响应和阶跃响应的数值求解,可以使用控制工具箱中提供的函数impulse和step来求解对某些函数进行验证和画图。
四、实验内容
1、已知系统的微分方程和激励信号,使用MATLAB命令画出系统的零状态响应和零输入响应(零状态响应分别使用符号法和数值法求解,零输入响应只使用符号法求解)。要求题目2必做,题目1选做。 解:
(2)零状态响应: 符号法:
eq1='D2y+4*Dy+4*y=Df+3*f'; eq2='f=exp(-t)*heaviside(t)';
2 / 4
cond='y(-0.001)=0,Dy(-0.001)=0';%求零状态响应 yzs=dsolve(eq1,eq2,cond); %符号求解 yzs=simplify(yzs.y) ezplot(yzs,[0,10]);grid on
title('符号法求零状态响应') %输出符号法求零状态响应 结果: yzs =
-(heaviside(t)*(t - 2*exp(t) + 2))/exp(2*t)
符号法求零状态响应0.350.30.250.20.150.10.050012345t678910 数值法:
t=0:0.001:10;%取间隔
sys=tf([1,3],[1,4,3]);%表示出系统微分方程 f=exp(-t).*heaviside(t);%表示激励信号 y=lsim(sys,f,t);%零状态响应 plot(t,y),grid on xlabel('Time'); ylabel('f(t)'); title('零状态数值法');
零状态数值法0.40.350.30.25f(t)0.20.150.10.050012345Time678910
零输入响应: 符号法:
eq='D2y+4*Dy+4*y=0'; %求零输入响应
cond='y(0)=11,Dy(0)=22'; %随意制定的起始条件 yzi=dsolve(eq,cond); %符号求解 yzi=simplify(yzi)
ezplot(yzi,[0,10]);grid on %输出符号法求零输入响应 title('符号法求零输入响应'); 结果 yzi = (11*(4*t + 1))/exp(2*t)
符号法求零输入响应109876543210012345t678910
2、已知系统的微分方程,使用MATLAB命令画出系统的冲激响应和阶跃响应(数值法)。要求题目2必做,题目1选做。 解:
(2)t=0:0.001:10;
sys=tf([0,1,0],[1,2,2]); f1=impulse(sys,t); subplot(2,1,1)
3 / 4
plot(t,f1),grid; xlabel('t'); ylabel('f1(t)'); title('冲激响应'); subplot(2,1,2)
plot(t,f2),grid; xlabel('t'); ylabel('f2(t)'); title('阶跃响应');
4 / 4
因篇幅问题不能全部显示,请点此查看更多更全内容