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

本文详细介绍了如何使用MATLAB进行连续系统的零状态响应、冲激响应、阶跃响应的计算,以及如何实现连续信号的卷积操作。通过具体例子,展示了控制系统工具箱中的lsim、impulse、step和conv函数的使用方法,验证了MATLAB在连续时间信号处理中的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验目的    

1. 学会用MATLAB求解连续系统的零状态响应;

2.学会用MATLAB求解冲激响应及阶跃响应;

3. 学会用MATLAB实现连续信号卷积的方法;

二、实验原理   

1.连续时间系统零状态响应的数值计算

我们知道,LTI连续系统可用如下所示的线性常系数微分方程来描述,

       \sum_{i=0}^{N}a_{i}y^{(i)}(t)=\sum_{j=0}^{M}b_{j}f^{(j)}(t)

在MATLAB中,控制系统工具箱提供了一个用于求解零初始条件微分方程数值解的函数lsim。其调用格式为:

y=lsim(sys,f,t)

式中,t表示计算系统响应的抽样点向量,f是系统输入信号向量,sys是LTI系统模型,用来表示微分方程,差分方程或状态方程。其调用格式为:

sys=tf(b,a)

式中,b和a分别是微分方程的右端和左端系数向量。例如,对于以下方程:

   a_{3}y'''(t)+a_{2}y''(t)+a_{1}y'(t)+a_{0}y(t)=b_{3}f'''(t)+b_{2}f''(t)+b_{1}f'(t)+b_{0}f(t)

可用a=[a,a,a,a];b=b,b,b,b]; sys=f(b,a)获得其LTI模型。

注意,如果微分方程的左端或右端表达式中有缺项,则其向量a或b中的对应元素应为零,不能省略不写,否则出错。

例3-1 已知某LTI系统的微分方程为    

y''(t)+2y'(t)+100y(t)=f(t)

其中,y(0)=y'(0)=0 ,f(t)=10sin(2\pi t),求系统的输出y(t)

解:显然,这是一个求系统零状态响应的问题。其MATLAB计算程序如下:

ts=0;te=5;dt=0.01;

sys=tf([1],[1,2,100]);

t=ts:dt:te;

f=10*sin(2*pi*t);

y=lsim(sys,f,0);

plot(t,y);

xlabel('Time(sec)');

ylabel('y(t)');

2.连续时间系统冲激响应和阶跃响应的求解

在MATLAB中,对于连续LTI系统的冲激响应和阶跃响应,可分别用控制系统工具箱提供的函数impluse和step来求解。其调用格式为

y=impulse(sys,t)

y=step(sys,t)

式中,t表示计算系统响应的抽样点向量,sys是LTI系统模型。

例3-2已知某LTI系统的微分方程为

y''(t)+2y'(t)+100y(t)=10f(t)

求系统的冲激响应和阶跃响应的波形.
解:

ts=0;te=5;dt=0.01;

sys=tf([10],[1,2,100]);

t=ts:dt:te;

h=impulse(sys,t);

figure;

plot(t,h);

xlabel('Time(sec)');

ylabel('h(t)');

g-step(sys,t);

figure;

plot(t.g);

xlabel('Time(sec)');

ylabel('g(t)');

3.用MATLAB实现连续时间信号的卷积

信号的卷积运算有符号算法和数值算法,此处采用数值计算法,需调用MATLAB的conv()函数近似计算信号的卷积积分。连续信号的卷积积分定义是

f(t)=f_{1}(t)*f_{2}(t)=\int_{-\infty }^{\infty }f_{1}(\tau )f_{2}(t-\tau )d\tau

如果对连续信号f_{1}(t)f_{2}(t)进行等时间间隔△均匀抽样,则f_{1}(t)f_{2}(t)分别变为离散时间信号f_{1}(m\Delta )f_{2}(m\Delta )。其中,m为整数。当Δ足够小时,f_{1}(m\Delta )f_{2}(m\Delta )

 

为连续时间信号f_{1}(t)f_{2}(t)。因此连续时间信号卷积积分可表示为

f(t)=f_{1}(t)*f_{2}(t)=\int_{-\infty }^{\infty }f_{1}(\tau )f_{2}(t-\tau )d\tau

        =\lim_{\Delta \rightarrow 0}\sum_{m=-\infty }^{\infty }f_{1}(m\Delta )\cdot f_{2}(t-m\Delta )\cdot \Delta

采用数值计算时,只求当t=n\Delta时卷积积分y(t)的值f(n\Delta ),其中,n为整数,既

f(n\Delta )=\sum_{m=-\infty }^{\infty }f_{1}(m\Delta )\cdot f_{2}(n\Delta -m\Delta )\cdot \Delta

            =\Delta \sum_{m\rightarrow -\infty }^{\infty }f_{1}(m\Delta )\cdot f_{2}[(n-m)\Delta ]

其中,\sum_{m\rightarrow -\infty }^{\infty }f_{1}(m\Delta )\cdot f_{2}[(n-m)\Delta ]实际就是离散序列f_{1}(m\Delta )f_{2}(m\Delta )的卷积和。当\Delta

够小时,序列f(n\Delta )就是连续信号f(t)的数值近似,既

f(t)\approx f(n\Delta )=\Delta [f_{1}(n)*f_{2}*(n)]

上式表明,连续信号 f_{1}(t)f_{2}(t) 的卷积,可用各自抽样后的离散时间序列的卷积再乘以抽样间隔\Delta。抽样间隔\Delta越小,误差越小。

例3-3用数值计算法求f_{1}(t)=u(t)-u(t-2)f_{2}(t)=e^{-3t}u(t)的卷积积分。

解:因为f_{2}(t)=e^{-3t}u(t)是一个持续时间无限长的信号,而计算机数值计算不可能计算真正的无限长信号,所以在进行f_{2}(t)的抽样离散化时,所取的时间范围让f_{2}(t)衰减到足够小就可以了,本例取t=2.5。程序是

dt=0.01;t=-1:dt:2.5;

fl=Heaviside(t)-Heaviside(t-2);

f2=exp(-3*t).*Heaviside(t);

f=conv(f1,f2)*dt;n=length(f);tt=(0:n-1)*dt-2;

subplot(221), plot(t,f1),grid on;

axis([-1,2.5,0.2,1.2]); titde('f1(t)'); xlabel('t')

subplot(222), plot(t,f2),grid on;

axis([-1,2.5,0.2,1.2]); title('f2(t)'); xlabel('t')

subplot(212), plot(tt,f), grid on;

title('f(t)=f1(t)*f2(t)');xlabel('t')

由于f_{1}(t)f_{2}(t)的时间范围都是从t=-1开始,所以卷积结果的时间范围从t=-2开始,增量还是取样间隔,这就是语句tt=(0:n-1)*dt-2的由来。

三,上机实验

1.验证上述实验内容

2.已知描述系统的微分方程和激励信号f(t)如下,试用解析法求系统的零状态响应y(t),并用MATLAB绘出系统零状态响应的时域仿真波形,验证结果是否相同

y''(t)+4y'(t)+4y(t)=f'(t)+3f(t)            f(t)=exp(-t)u(t)

clear
ys=dsolve('D2y+4*Dy+4*y=0','y(0)=1,Dy(0)=1');%求零输入响应
anns=dsolve('D2y+4*Dy+4*y=Df+3*f','f=exp(-t)*heaviside(t)','y(-0.001)=0,Dy(-0.001)=0');% heaviside(t)表示单位阶跃信号
yt=simplify(anns.y)%求零状态响应,ans为结构体,ans.y为零状态响应
yq = simplify(ys+yt);%求全响应
a=[1 4 4];b=[0 1 3];
sys=tf(b,a);
t=0:0.01:5;%求t在0到5之间时对应的响应值
f=exp(-t).*(t>=0);
c=lsim(sys,f,t);  %零状态响应的波形
plot(t,c);
xlabel('Time(sec)'); 
ylabel('y(t)'); 
title('零状态响应')

3.已知描述系统的微分方程如下,试用MATLAB求系统在0~10秒范围内冲激响应和阶跃响应的数值解,并用绘出系统冲激响应和阶跃响应的时域波形

(1)y''(t)+3y'(t)+2y(t)=f(t)

ts=0;te=10;dt=0.5;
a=[1,3,2];
b=[0 0 1];
sys=tf(b,a);
t=ts:dt:te;
y1=impulse(sys,t)%(1)冲激响应数值
subplot(211)
plot(t,y1);
xlabel('Time(sec)');
ylabel('h(t)1');title('(1)冲激响应')
y2=step(sys,t)%(1)阶跃响应数值解
subplot(212)
plot(t,y2);
xlabel('Time(sec)');
ylabel('g(t1)');title('(1)阶跃响应')

(2)y''(t)+2y'(t)+2y(t)=f'(t)

%. 3.2已知描述系统的微分方程如下,试用MATLAB求系统在0-10秒范围内冲激响应和阶跃响应的数值解,
%并用绘出系统冲激响应和阶跃响应的时域波形
%y"(t)+2y'(t)+2y(t)=f'(t)(2)
c=[1,2,2];
d=[0 1 0];
ts=0;te=10;dt=0.5;
sys=tf(d,c);
t=ts:dt:te;
y3=impulse(sys,t)%(2)冲激响应数值
%figure(1);
subplot(211)
plot(t,y3);
xlabel('Time(sec)');
ylabel('h(t)2');title('(2)冲激响应')
y4=step(sys,t);%(2)阶跃响应数值解
%figure(2);
subplot(212)
plot(t,y4);
xlabel('Time(sec)');
ylabel('g(t)2');title('(2)阶跃响应')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值