试用 Matlab 内核函数 step、impulse、lsim 等求出x(0) = [2,1,0] ′、控制输入为单位阶跃、 单位脉冲、以及 sin(t)情况下的三阶状态方程中系统输出。
时间: 2024-02-04 12:04:09 浏览: 28
好的,我可以帮你解决这个问题。首先,我们需要先定义三阶状态方程,并将其转换为状态空间形式。
假设我们的三阶状态方程为:
```matlab
x1' = -2*x1 + 3*x2 - 4*x3 + u
x2' = -x1 + 2*x2 - 3*x3
x3' = x1 - x2 + 2*x3
y = [1 0 0]*[x1;x2;x3]
```
其中,u 为输入,y 为输出。
将其转换为状态空间形式:
```matlab
A = [-2 3 -4; -1 2 -3; 1 -1 2]
B = [1; 0; 0]
C = [1 0 0]
D = 0
sys = ss(A,B,C,D)
```
接下来,我们可以使用 step、impulse、lsim 等函数求出不同输入情况下的系统输出。
- 单位阶跃输入情况下的系统输出:
```matlab
t = 0:0.01:5;
u = ones(size(t));
[y,t,x] = lsim(sys,u,t,[2;1;0]);
plot(t,y)
```
- 单位脉冲输入情况下的系统输出:
```matlab
t = 0:0.01:5;
u = zeros(size(t));
u(1) = 1;
[y,t,x] = lsim(sys,u,t,[2;1;0]);
plot(t,y)
```
- sin(t) 输入情况下的系统输出:
```matlab
t = 0:0.01:5;
u = sin(t);
[y,t,x] = lsim(sys,u,t,[2;1;0]);
plot(t,y)
```
注意:这里的 x(0) = [2;1;0] 是指系统在 t=0 时的初态,也就是初始状态下 x1=2,x2=1,x3=0。