如何用MATLAB标出收敛域
时间: 2024-12-11 19:12:56 浏览: 23
在MATLAB中,标出动态系统函数(如传递函数、Z变换等)的收敛域通常是通过绘制幅值响应图(Bode或Nyquist图)或极坐标图(polar plot)以及复数平面上的根轨迹。这里是一般的步骤:
1. **确定函数的收敛条件**:
- 对于传递函数 `num` / `den` 形式,如果分母多项式的零点(极点)在s-plane(复频域)中的位置决定了系统的稳定性。系统只有当所有极点都在右半平面(Re(s) > 0)时才收敛。
2. **绘制Bode图**:
- 使用 `bode(sys)` 函数绘制幅值和相位响应。幅值下降到一定程度(通常低于-180dB)时的频率称为截止频率,对应的极点决定了系统的收敛域的边界。
- 结合相位特性,判断是否存在穿越-180度的情况,这可能表明系统不收敛。
3. **绘制Nyquist图**:
- 使用 `nyquist(sys)` 可以直观查看系统的稳定性。如果所有的循环都不穿过-1+j0这条虚轴(即穿越次数为0),那么系统就是稳定的,对应的s-plane区域就是其收敛域。
4. **根轨迹法**:
- 对于复杂系统,可以使用 `rlocus` 函数绘制根轨迹。根轨迹是系统闭环极点随着增益变化轨迹的集合,它展示了在所有增益下的系统收敛域。
5. **标记收敛域**:
- 在图形窗口中,你可以手动选择并添加标注,描述哪些部分是收敛区域,或者利用MATLAB内置的`axis equal`和`grid on`命令保证坐标轴比例均匀,以便更好地看出边界。
```matlab
[num, den] = ...; % 你的传递函数系数
sys = tf(num, den);
bode(sys);
grid on;
hold on;
% 标记收敛区域(假设右半平面)
plot(-Inf, 0, 'k--'); % 画一条虚轴线
xlim([-Inf, Inf]); ylim([0, 60]); % 设置x轴和y轴范围
```
阅读全文