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

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

3 斜坡响应

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

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

例如闭环系统为:
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 = T t=T 结束的区间内每隔 Δ t \Delta t Δt 秒计算一次响应 ,其中 T T T t t t 的 正整数倍。值得注意的是,带有左端参数的如下命令:

y = lsim(sys,u,t);

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

plot(t, y)

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

lsim(sys, u ,t, x)

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

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

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

猜你喜欢

转载自blog.csdn.net/weixin_43229030/article/details/110847855