MATLAB 系统仿真与建模(六)—— 瞬态响应分析-任意输入

前置阅读:MATLAB 系统仿真与建模(五)—— 瞬态响应分析-冲激响应

3 斜坡响应

在 MATLAB 中没有关于斜坡响应的命令。所以必须采用 s t e p stepstep 命令或 l s i m lsimlsim 命令。

具体地讲,要得到传递函数 G ( s ) G(s)G(s) 在零初始条件下的斜坡响应,可以将 G ( s ) G(s)G(s) 除以 s ss ,再采用阶跃响应命令。

例如闭环系统为:
C ( s ) R ( s ) = 1 s 2 + s + 1 {\frac{C(s)}{R(s)}}={\frac1{s^2+s+1}}R(s)C(s)=s2+s+11
对于单位斜坡输入,则 R ( s ) = 1 s 2 R(s)={\frac{1}{s^2}}R(s)=s21 ,所以:
C ( s ) = 1 s 2 + s + 1 1 s 2 = 1 ( s 2 + s + 1 ) s 1 s C(s) = {\frac{1}{s^2+s+1}}{\frac{1}{s^2}}={\frac{1}{(s^2+s+1)s}}{\frac 1{s}}C(s)=s2+s+11s21=(s2+s+1)s1s1
程序如下:

num = [0 0 0 1];
den = [1 1 1 0];
t = 0:0.1:7;
c = step(num, den, t);
plot(t, c, 'o', t, t, '-')
grid
title('Unit-Ramp Response Curve for System G(s)=1/(s^2+s+1)')
xlabel('t Sec')
ylabel('Input and Output')

MATLAB 输出如下:

在这里插入图片描述

关于状态空间方程的略

4 任意输入

我们使用 lsim() 命令:

程序如下:

lsim(num,den,u,t);
lsim(sys,u,t);
y = lsim(A,B,C,D,u,t);
[y,t] = lsim(sys,u,t);
lsim(A,B,C,D,u,t);
y = lsim(num,den,u,t); 
y = lsim(sys,u,t);

在初始条件为零时会产生对输入时间函数u 的响应。如果t 由下式给定:

t = 0 : Δ t : T ​ t = 0:\Delta t:T​t=0:Δt:T

则从 Δ t = 0 \Delta t=0Δt=0 开始 到 t = T t = Tt=T 结束的区间内每隔 Δ t \Delta tΔt 秒计算一次响应 ,其中 T TTt tt 的 正整数倍。值得注意的是,带有左端参数的如下命令:

y = lsim(sys,u,t);

会返回输出响应 y yy 。矩阵 y yy 的各列是输出,它的行数等于 t tt 的长度。但它不绘制图形,要绘制响应曲线,必须再使用命令 :

plot(t, y)

如果状态空间模型的初始条件不为零,那么命令:

lsim(sys, u ,t, x)

会生成系统对输入 u uu 和初始条件 x 0 x_0x0 的响应 ,其中 x 0 x_0x0 是初始状态。还要注意的是,命令:

lsim(sysl, sys2, ... ,  u, t)

可以在同一幅图中绘制多个系统 ( s y s 1 , s y s 2 , . . . ) (sys1, sys2, ... )(sys1,sys2,...) 的响应


版权声明:本文为weixin_43229030原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。