自行构造二阶或二阶以上的闭环传递函数,分别使用MATLAB进行瞬态响应分析,并 画出响应曲线。内容包括: (1)画出单位脉冲响应曲线。 (2)画出单位阶跃响应曲线。 (3)画出单位斜波响应曲线。 (4)求出其两个状态变量初始条件为[12]时的零输入响应。
时间: 2024-11-22 18:34:30 浏览: 30
在MATLAB中,进行二阶及以上系统(比如一阶、二阶或更复杂的动态系统)的闭环传递函数分析并绘制响应曲线通常涉及以下几个步骤:
**1. 定义闭环传递函数**
假设我们有一个二阶系统的闭环传递函数,例如:
\[ G(s) = \frac{K(s^2 + a_1s + a_0)}{(s+b_1)(s+b_2)} \]
其中 \( K, a_1, a_0, b_1, b_2 \) 是系统常数。
**2. 单位脉冲响应 (Step Response):**
使用 `impulse` 函数,输入闭环传递函数,然后使用 `stepinfo` 获取上升时间、峰值时间和稳态值等信息。示例:
```matlab
[t, y] = impulse(G); % 计算响应
plot(t, y, 'b', '-o'); % 绘制响应曲线
title('Unit Impulse Response');
xlabel('Time (s)');
ylabel('Response');
```
**3. 单位阶跃响应 (Rise Response):**
同样使用 `step` 函数,然后分析响应数据。
```matlab
[t, y] = step(G);
plot(t, y, 'r', '-o');
hold on; % 保持当前图层,以便叠加响应
title('Unit Ramp Response');
```
`rise_time`, `peak` 和 `settling_time` 等可以通过 `stepinfo(y)` 获取。
**4. 单位斜波响应 (Parabolic Input):**
对于非标准输入如斜坡信号,需要手动创建斜率函数并将其转换成离散形式后应用。例如,使用 `tspan` 和 `linspace` 创建斜波时间序列,再乘以斜率计算模拟的斜波输入信号,然后用 `lsim` 求解响应。
```matlab
input_slope = ...; % 根据需要设定斜率
time_span = tspan;
input_signal = input_slope * linspace(0, 1, length(time_span));
[y, t] = lsim(G, input_signal, time_span);
plot(t, y, 'g', '-o');
title('Unit Parabolic Response');
```
**5. 零输入响应 (Zero Input Response) with Initial Conditions:**
若初始条件为 `[12]`,即状态向量的起始值为 `[x01 x02]`,则需要首先确定状态空间模型,然后使用 `zeroInputResponse` 函数。假设状态方程为:
\[ \dot{x} = Ax + Bu \]
初始状态 `x0 = [12]`。
```matlab
x0 = [12 zeros(1, nstates - 1)]; % 假设nstates为状态变量个数
zir = zeroInputResponse(G, tspan, x0);
plot(zir(:, 1), zir(:, 2:end), 'm', '-o');
title('Zero Input Response with Initial Condition');
xlabel('Time (s)');
ylabel('State Variables');
```
记得替换 `nstates` 和实际的状态矩阵 `A` 和输入矩阵 `B`。
阅读全文