信号与系统仿真连续时间LTI系统的时域分析.docx
《信号与系统仿真连续时间LTI系统的时域分析.docx》由会员分享,可在线阅读,更多相关《信号与系统仿真连续时间LTI系统的时域分析.docx(11页珍藏版)》请在冰点文库上搜索。
![信号与系统仿真连续时间LTI系统的时域分析.docx](https://file1.bingdoc.com/fileroot1/2023-6/12/7c7f695d-b4eb-40d2-bb72-54ee6f1fdb28/7c7f695d-b4eb-40d2-bb72-54ee6f1fdb281.gif)
信号与系统仿真连续时间LTI系统的时域分析
电子信息工程系实验报告
成绩:
课程名称:
计算机仿真技术
指导教师(签名):
实验项目名称:
实验4 信号与系统仿真—连续时间LTI系统的时域分析
实验时间:
2011-11-22 班级:
电信092 姓名:
XXX 学号:
910706201
一、实验目的:
学会运用MATLAB符号求解连续系统的零输入响应和零状态响应;学会运用MATLAB数值求解连续系统的零状态响应;学会运用MATLAB求解连续系统的冲激响应和阶跃响应;思考运用MATLAB卷积积分法求解系统的零状态响应。
二、实验环境:
硬件:
PC机,PII以上CPU,内存1G;
软件:
Matlab7.1
三、实验原理:
连续时间系统零状态响应的数值求解:
对于零状态响应,MATLAB控制系统工具箱提供了对LTI系统的零状态响应进行数值仿真的函数lsim,该函数可求解零初始条件下微分方程的数值解,语句格式为:
y=lsim(sys,f,t)
其中,t表示计算系统响应的时间抽样点向量;f是系统的输入信号向量;sys表示LTI系统模型,用来表示微分方程、差分方程或者状态方程。
在求微分方程时,sys是由MATLAB的tf函数根据微分方程系数生成的系统函数对象,其语句格式为:
sys=tf(b,a)
其中,b和a分别为微分方程右端和左端的系数向量。
例如,对于微分方程
可用
;
;
获得其LTI模型。
注意,如果微分方程的左端或右端表达式中有缺项,则其向量a或者b中对应的元素应为0,不能省略不写,否则会出错。
连续时间系统冲激响应和阶跃响应的求解:
在MATLAB中,对于连续LTI系统的冲激响应和阶跃响应的数值解,可分别用控制系统工具箱提供的函数impulse和step来求解。
其语句格式分别为:
y=impulse(sys,t);
y=step(sys,t);
其中,t表示计算机系统响应的时间抽样点向量,sys表示LTI系统模型。
四、实验内容及过程:
1.1、已知系统的微分方程和激励信号
如下,试用MATLAB命令绘出系统零状态响应的时域仿真波形图。
(1)
(2)
思路:
建立关于单位阶跃函数的源文件,即创建名为uCT的M文件:
functionf=uCT(t)
f=(t>0);
保存后,就可调用该函数。
利用函数式y=lsim(sys,f,t)求LTI系统的零状态响应。
(1)按要求可编写如下程序代码:
clear;clc;
ts=0;te=5;dt=0.01;
sys=tf([1],[1,4,3]);
t=ts:
dt:
te;
f=1.*uCT(t);
y=lsim(sys,f,t);
plot(t,y),gridon
xlabel('Time(sec)'),ylabel('y(t)')
title('零状态响应');
(2)同理,按要求编写如下程序代码:
clear;clc;
ts=0;te=5;dt=0.01;
sys=tf([1,3],[1,4,4]);
t=ts:
dt:
te;
f=exp(-t).*uCT(t);
y=lsim(sys,f,t);
plot(t,y),gridon
xlabel('Time(sec)'),ylabel('y(t)')
title('零状态响应');
1.2、利用卷积积分法求题1.1的系统零状态响应。
思路:
利用卷积积分法求系统的零状态响应,可先求单位冲激响应,接着将输入信号与冲激响应进行卷积即可。
利用MATLAB中的function命令建立连续时间信号卷积运算的函数ctsconv.m。
其源程序为:
function[f,t]=ctsconv(f1,f2,t1,t2,dt)
f=conv(f1,f2);
f=f*dt;
ts=min(t1)+min(t2);
te=max(t1)+max(t2);
t=ts:
dt:
te;
subplot(221)
plot(t1,f1);gridon
axis([min(t1),max(t1),min(f1)-abs(min(f1)*0.2),max(f1)+abs(max(f1)*0.2)])
title('f1(t)');xlabel('t');
subplot(222)
plot(t2,f2);gridon
axis([min(t2),max(t2),min(f2)-abs(min(f2)*0.2),max(f2)+abs(max(f2)*0.2)])
title('f2(t)');xlabel('t');
subplot(212)
plot(t,f);gridon
axis([min(t),max(t),min(f)-abs(min(f)*0.2),max(f)+abs(max(f)*0.2)])
title('f(t)=f1(t)*f2(t)');xlabel('t');
(1)按要求可在命令窗口中编写如下程序代码:
clear;clc;
dt=0.01;
t1=0:
dt:
5;
f1=1.*uCT(t1);
t2=t1;
sys=tf([1],[1,4,3]);
f2=impulse(sys,t2);
[t,f]=ctsconv(f1,f2,t1,t2,dt);
(2)按要求可在命令窗口中编写如下程序代码:
clear;clc;
dt=0.01;
t1=0:
dt:
5;
f1=exp(-t1).*uCT(t1);
t2=t1;
sys=tf([1,3],[1,4,4]);
f2=impulse(sys,t2);
[t,f]=ctsconv(f1,f2,t1,t2,dt);
2、已知系统的微分方程如下,试用MATLAB命令求系统冲激响应和阶跃响应的数值解,并绘出系统冲激响应和阶跃响应的时域波形图。
(1)
(2)
思路:
利用控制系统工具箱提供的函数impulse和函数step来求解。
(1)可在命令窗口编写如下程序代码:
clear;clc;
t=0:
0.001:
4;
sys=tf([1],[1,3,2]);
h=impulse(sys,t);
g=step(sys,t);
subplot(211)
plot(t,h),gridon
xlabel('Time(sec)'),ylabel('h(t)')
title('冲激响应')
subplot(212)
plot(t,g),gridon
xlabel('Time(sec)'),ylabel('g(t)')
title('阶跃响应')
(2)可在命令窗口编写如下程序代码:
clear;clc;
t=0:
0.001:
4;
sys=tf([1],[1,2,2]);
h=impulse(sys,t);
g=step(sys,t);
subplot(211)
plot(t,h),gridon
xlabel('Time(sec)'),ylabel('h(t)')
title('冲激响应')
subplot(212)
plot(t,g),gridon
xlabel('Time(sec)'),ylabel('g(t)')
title('阶跃响应')
五、实验结果及分析:
题1.1、在命令窗口中分别输入以上程序代码并执行此文件,可在窗口中分别看到
和
的零状态响应的时域仿真波形图,如图1、2所示:
图1
图2
题1.2、利用上述编写的关于卷积积分法的程序代码,输入到命令窗口中并运行,可分别看到如图3、4所示的零状态响应的时域仿真波形图。
图3 卷积法求
零状态响应
图4 卷积法求
零状态响应
综合图1、2、3、4可知,利用卷积积分法求系统的零状态响应和利用函数lsim求解所得的图形大体一致,方法可行。
题2、在命令窗口中分别输入以上程序代码并执行此文件,可在窗口中分别看到系统冲激响应和阶跃响应的时序波形图,如图5、6所示:
图5
波形图 图6
波形图
六、问题与思考:
1、思考如何用卷积积分法求系统的零状态响应,叙述详细的编程求解思路。
答:
用卷积积分法求系统的零状态响应,可先求单位冲激响应,接着将输入信号与冲激响应进行卷积,即可求得系统的零状态响应。
利用卷积函数conv自定义编写以M文件形式存在的函数ctsconv.m,编程如下:
function[f,t]=ctsconv(f1,f2,t1,t2,dt)
f=conv(f1,f2);
f=f*dt;
ts=min(t1)+min(t2);中文论坛
te=max(t1)+max(t2);
t=ts:
dt:
te;文论坛
subplot(2,2,1);plot(t1,f1);
gridon;
axis([min(t1),max(t1),min(f1)-abs(min(f1)*0.2),max(f1)+abs(max(f1)*0.2)]);
title('f1(t)');xlabel('t');
subplot(2,2,2);plot(t2,f2);文论坛
gridon;
axis([min(t2),max(t2),min(f2)-abs(min(f2)*0.2),max(f2)+abs(max(f2)*0.2)]);
title('f2(t)');xlabel('t');
subplot(2,1,2);plot(t,f);
gridon;
axis([min(t),max(t),min(f)-abs(min(f)*0.2),max(f)+abs(max(f)*0.2)]);
title('f(t)=f1(t)*f2(t)');xlabel('t');
若f(t)为系统的激励信号即输入信号,f
(2)即为单位冲激响应,求单位冲激响应可利用式子f
(2) =impulse(sys,t2)求得。
综上所述,明显可用卷积积分法求系统的零状态响应。