Matlab 库函数中的 lsim()能对微分方程描述的 LTI 连续时间系统的响应进行仿真。
函数 lsim()的调用格式: lsim(b,a,x,t)
该调用格式中,a 和 b 是由描述系统的微分方程左边和右边系数构成的两个行向量;t 为输入信号时间范围的向量,x 为输入信号在向量 t 定义的时间点上的抽样值。
代码:
% 微分方程 y"(t) + 4y'(t) + 3y(t) = f'(t) + 2f(t)
% 输入信号 f(t) = 20e^(-2t)u(t)
% 初始值 y(0^(-)) = 2, y'(0^(-)) = 1
% 求系统的零状态响应
a = [1 4 3];
b = [1 2];
[A B C D]=tf2ss(b,a); %tf2ss函数将传递函数模型转化为状态空间模
sys=ss(A,B,C,D); %sys由函数ss构造的状态空间模型
p=0.01; %定义取样时间间隔
t=0:p:3; %定义时间范围
f=zeros(1,length(t))
zi=[1 2];
y1=lsim(sys,f,t,zi); %系统的零输入响应
x=20*exp(-2*t);
y2=lsim(sys,x,t); %系统的零状态响应
y3=lsim(sys,x,t,zi); %系统的全响应
subplot(3,1,1);
plot(t,y1);
title("系统的零输入响应");
subplot(3,1,2);
plot(t,y2);
title("系统的零状态响应");
subplot(3,1,3);
plot(t,y3);
title("系统的全响应");
MATLAB 为用户提供了专门用于连续系统冲激响应并绘制其时域波形的impulse 函数。其函数 impulse()的调用格式:impulse(b,a)。其中 a 和 b 是由描述系统的微分方程左边和右边系数构成的两个行向量。
用于连续系统阶跃响应并绘制其时域波形的 step 函数。函数 step()的调用格式为:step(b,a)。其中 a 和 b 是由描述系统的微分方程左边和右边系数构成的两个行向量。
代码:
a=[1 2 3];
b=[1];
subplot(2,1,1)
impulse(b,a)
title("冲激响应")
subplot(2,1,2)
step(b,a)
title("阶跃响应")
代码:
t=0:0.01:1;
y1=exp(-6*t);
y2=exp(-3*t);
y=conv(y1,y2);
l1=length(y1);
l2=length(y2);
l=length(y);
subplot(3,1,1);
plot(t,y1);
title("f1(t)");
subplot(3,1,2);
plot(t,y2);
title("f1(t)");
t1=0:0.01:2;
subplot(3,1,3);
plot(t1,y);
title("f1(t) * f2(t)");
觉得不错的,可以点个赞哦~