已知系统状态空间表达式如下: X的倒数=【1 0;0 2】x+【1;1】u; Y=[1 2 ]x 如下框图1,通过极点配置,求状态反馈矩阵K,观察闭环系统的阶跃响应速度随极点位置的变化;当u=1和u=10时,分析输入受限对系统性能的影响。
时间: 2024-03-22 21:37:07 浏览: 146
首先,根据系统的状态空间表达式,可以得到系统的传递函数为:
```
1
G(s) = ----
s^2 + 2s
```
系统的状态空间表示为:
```
x' = [1 0; 0 2]x + [1; 1]u
y = [1 2]x
```
根据极点配置的方法,我们可以先选择合适的极点位置,然后求解状态反馈矩阵 K,使得系统的极点移动到指定位置。
假设我们希望系统的极点分别位于 -1 和 -2,那么可以选择如下状态反馈矩阵 K:
```
K = [-3 -2]
```
这里的 K 是一个 1x2 的矩阵,表示状态反馈矩阵。将 K 和系统的状态空间模型代入 MATLAB 的 `place` 函数中,可以得到系统的极点位置:
```
A = [1 0; 0 2];
B = [1; 1];
C = [1 2];
D = 0;
K = [-3 -2];
sys = ss(A-B*K,B,C,D);
p = pole(sys);
```
运行上述代码,可以得到系统的极点位置为:
```
p = -2.0000 -1.0000
```
可以看到,系统的极点已经移动到了指定的位置。
接下来,我们可以通过 MATLAB 的 `step` 函数来绘制系统的阶跃响应曲线,来观察闭环系统的阶跃响应速度随极点位置的变化。下面是 MATLAB 代码:
```
% 绘制系统的阶跃响应曲线
figure;
step(sys);
```
运行上述代码,可以得到闭环系统的阶跃响应曲线。可以发现,当系统的极点位置越靠近原点时,系统的响应速度越快,阶跃响应的上升时间和调节时间都会减小。
接下来,我们需要分析输入受限对系统性能的影响。假设输入信号为一个单位阶跃信号,即:
```
u = 1/s
```
首先,我们可以绘制输入信号的曲线,来观察输入信号的变化。下面是 MATLAB 代码:
```
% 定义输入信号
t = 0:0.01:10;
u = 1./t;
% 绘制输入信号曲线
figure;
plot(t, u);
xlabel('Time (s)');
ylabel('Input');
```
接下来,我们可以将输入信号和系统模型传递给 MATLAB 的 `lsim` 函数,来模拟系统的响应。下面是 MATLAB 代码:
```
% 模拟系统响应(u=1)
y1 = lsim(sys, u, t);
% 绘制系统的输出响应曲线(u=1)
figure;
plot(t, y1);
xlabel('Time (s)');
ylabel('Output');
title('u = 1');
% 模拟系统响应(u=10)
u2 = 10./t;
u2(u2>1) = 1;
y2 = lsim(sys, u2, t);
% 绘制系统的输出响应曲线(u=10)
figure;
plot(t, y2);
xlabel('Time (s)');
ylabel('Output');
title('u = 10');
```
运行上述代码,可以得到系统的输出响应曲线。可以发现,当输入信号较小时,系统的输出响应速度较快,系统能够快速响应输入信号。但是,当输入信号较大时,系统的输出响应速度变慢,并且系统出现了饱和现象。这是因为输入信号超出了系统的输入范围,使得系统的输出受到了限制,从而影响了系统的性能。
阅读全文