多变量系统带有 Gershgorin 带的逆 Nyquist 图分析工具
项目介绍
本项目是一款专门用于多变量控制系统(MIMO)频域分析的 MATLAB 工具。通过结合逆 Nyquist 阵列方法与 Gershgorin 定理,该工具能够直观地评估系统在闭环控制下的稳定性和通道间的耦合程度。其核心思想是利用多变量传递函数矩阵的逆矩阵,在复平面上构建包含对角元轨迹及其耦合强度信息的 Gershgorin 带。通过对这些带状区域的观察,工程师可以快速判断系统是否具有对角优势,从而简化解耦控制器的设计。
功能特性
- 多变量矩阵逆频域分析:自动计算给定频率范围内传递函数矩阵的逆矩阵响应。
- Gershgorin 圆盘与带状绘图:根据计算出的行半径实时生成 Gershgorin 带,动态展示耦合随频率的变化。
- 对角优势自动评估:实时计算并判定各通道在整个频率范围内是否满足对角优势准则(即原点不在 Gershgorin 带内)。
- 复数包络可视化:采用基于梯度的法向估计算法,绘制平滑的 Gershgorin 带包络线并填充颜色。
- 交互式图形展示:支持多通道并行展示,并标记特定频率点的耦合圆盘以此增强可读性。
系统要求
- 软件环境:MATLAB R2019b 或更高版本。
- 必要工具箱:Control System Toolbox(用于传递函数定义与频率响应计算)。
实现逻辑说明
程序按照以下步骤执行核心逻辑:
- 系统模型构建:定义一个 3x3 的多变量传递函数矩阵。示例代码中包含具有特定二阶和一阶动力学特性的对角元及相互耦合的非对角元。
- 频率响应采样:在 $10^{-2}$ 到 $10^2$ rad/s 范围内生成对数分布的 500 个频率采样点。
- 矩阵求逆(核心流程):
* 利用内置函数计算每个频率点处的响应。
* 对矩阵进行求逆。为防止在奇异矩阵点出现数值不稳定,程序加入了微小扰动(1e-12 阈值判断及 1e-6 的恒等矩阵偏移)。
- 半径计算(Gershgorin 算法):对于逆矩阵的每一行,计算所有非对角线元素模的和,该和即为当前频率下对应对角通道的 Gershgorin 圆盘半径。
- 包络与图形渲染:
* 提取对角线元素的实部和虚部。
* 利用梯度函数计算轨迹切向,进而估计法向,确定包络边界点。
* 使用填充功能绘制带状区域,并在指定采样点绘制具体的 Gershgorin 圆。
关键函数与算法分析
- 矩阵逆处理逻辑:程序在循环中对每个频率点执行求逆操作。这是逆 Nyquist 阵列法(INA)的基础,旨在将多变量系统的设计问题转化为多个准单变量系统的设计。
- Gershgorin 定理应用:算法严格遵循 Gershgorin 盘定理,即 $Q(jomega)$ 的特征值落在以 $q_{ii}(jomega)$ 为圆心、以行元素模之和为半径的圆内。
- 包络线生成算法:
* 通过
gradient 函数获取轨迹的变化率。
* 结合
angle 函数计算法向角度,利用三角函数将半径偏置叠加到主轨迹上,生成
env_top 和
env_bot 边界。
- 对角优势判别标准:程序代码通过计算对角元到原点的矢量距离是否在所有频率点均大于半径
r,来判定 is_dominant 状态,这是衡量系统能否独立调解的重要指标。 - 辅助逻辑函数:内部定义的
if_then_else 函数用于在图形标题中实现根据逻辑判断结果动态输出文本的功能。
使用方法
- 启动 MATLAB 软件环境。
- 将控制系统定义的参数(如传递函数 $G_{ij}$)修改为您的实际研究对象。
- 运行该主程序函数。
- 观察生成的图形窗口:
*
实线:代表逆 Nyquist 轨迹。
*
阴影区域:代表 Gershgorin 带,反映耦合强度。
*
+号:代表复平面原点。
*
标题:将直接显示该通道是否满足对角优势。