控制系统时域瞬态响应分析
1 单位脉冲响应
当输入信号为单位脉冲响应函数 时,系统输出为单位脉冲响应,可使用impulse()函数计算。
matlab语法格式:
[y,x,t]=impulse(num,den,t)
或者 impulse(G)
式子中:t为仿真时间,y为时间t的输出响应,x为时间t的状态响应,G为系统的传递函数
2 单位阶跃响应
当输入信号为单位阶跃函数信号时,系统输出为单位阶跃响应,可使用step()函数计算。
matlab语法格式:
[y,x,t]=step(G,t)
或者 step(G)
式子中:t为仿真时间 缺省的时候,为系统默认时间,y为时间t的输出响应,x为时间t的状态响应,G为系统的传递函数,
3 零输入响应
当无输入信号的时候,使用initial()函数来计算和显示连续系统响应曲线
maltab语法格式
initial(G,x0) %绘制系统零输入响应曲线
initial(G1,G2,…,x0)%绘制多个系统的零输入响应曲线
[y,t,x]=initial(G,x0)
式子中,G为系统状态空间模型,x0为初始条件,y为输出响应,t为时间向量,x为状态变量时间响应。
4 任意函数作用下系统响应
maltab语法格式:
[y,t]=lsim(G,u,t)
其中,y为系统输出响应,x为系统状态响应,u为系统输入响应,t为仿真时间。
如 输入为斜坡函数,可设置t=初值:步长:终值;u=t;
举例1
对闭环传递函数
进行单位脉冲、单位阶跃、单位斜坡以及画出初始条件为[1 ;2 ;1]时的零输入响应。
maltab代码
num=[1 1];
den=[1 2 3 1];
G=tf(num,den) %传递函数
subplot(2,2,1);
impulse(G); %脉冲响应
subplot(2,2,2);
step(G); %阶跃响应
subplot(2,2,3)
G1=ss(G)
x0=[1;2;1]
initial(G1,x0); %零输入响应
t=0:0.1:10;
subplot(2,2,4)
u=t;
lsim(G,u,t); %斜坡响应
运行结果:
G =
s + 1
---------------------
s^3 + 2 s^2 + 3 s + 1
Continuous-time transfer function.
G1 =
A =
x1 x2 x3
x1 -2 -1.5 -1
x2 2 0 0
x3 0 0.5 0
B =
u1
x1 1
x2 0
x3 0
C =
x1 x2 x3
y1 0 0.5 1
D =
u1
y1 0
Continuous-time state-space model.
x0 =
1
2
1
举例2
求开环传递函数
单位负反馈的闭环传递函数的三角波输入的响应曲线三角波的函数定义为周期为8s,最大幅值为2。
%输入信号
t=0:0.1:8;
v1=[0:0.1:2];
v2=[1.9:-0.1:-2];
v3=[-1.9:0.1:0];
num=[10 20];
den=[1 3 5 0]
Gopen=tf(num,den) %开环传递函数
Gclose=feedback(Gopen,1) %单位闭环传递函数
u=[v1,v2,v3];
[y,x]=lsim(Gclose,u,t); %三角波输入响应
figure
plot(t,u,t,y);
xlabel('time [s]');
ylabel('theta [rad]');
grid on;
运行结果:
Gopen =
10 s + 20
-----------------
s^3 + 3 s^2 + 5 s
Continuous-time transfer function.
Gclose =
10 s + 20
-----------------------
s^3 + 3 s^2 + 15 s + 20
Continuous-time transfer function.