2026a

# balancmr


基于平方根法的平衡模型截断

函数库: TyRobustControl

# 语法

GRed,RedInfo = balancmr(G, order)
GRed,RedInfo = balancmr(G, order, Key=Value, ...)

# 说明

GRed,RedInfo = balancmr(G, order) 根据指定的阶数,返回降阶模型 GRed 和结构体 RedInfo,其中包含降阶模型的误差边界和原系统的 Hankel 奇异值。

误差边界是根据 G 的 Hankel 奇异值计算得出的。对于一个稳定的系统,这些值表示系统各自的状态能量。因此,可以通过检查系统的汉克尔奇异值 σι 直接确定简化阶。

对于条件良好的模型缩减问题,该方法可保证加性误差的无穷法误差约束:


Gred,RedInfo = balancmr(G, order, Key=Value,...) 使用 1 个或多个关键词 = 参数对为计算过程指定额外选项。

# 示例

按指定阶数降阶模型

如果您有特定的目标阶次,可以使用 balancmr 将高阶模型简化为这些阶次。在本例中,使用随机 30 阶状态空间模型。

using TyRobustControl
using TyControlSystems
using Random

Random.seed!(1234);
G = rss(30,5,4);
G1,_ = balancmr(G,20);
sigma(G,G1)

20 阶近似系统与原始 30 阶模型的动力学基本吻合。

聚焦特定频段的减噪效果

将四阶系统简化为二阶近似系统,重点是 10 rad/s - 100 rad/s 频段。考虑以下系统。

using TyRobustControl
using TyControlSystems
using TyPlot

sys = tf(1,[1 0.5 1]) + tf(100*[1/10 1],[1 10 1000]); 
bode(sys)

为了将模型还原算法的重点放在高频动态上,可指定一个具有带通轮廓的函数。

s = tf("s"); 
w1 = (s+1)/(s/10+1)/(s/60+1)*(s/600+1); 
bodemag(w1)

该图证实加权函数 w1 具有理想的曲线,峰值在 10 rad/s 和 100 rad/s 之间。要进行还原,请使用 balancmr 的 "权重 "选项指定该曲线的倒数作为输出权重。

weight = (1/w1, tf(1)); 
wrsys,_ = balancmr(sys,2,Weights=weight);

将结果与未加权重的二阶模型进行比较。

rsys,_ = balancmr(sys,2);
bode(sys,rsys,wrsys)
legend(["Original","Unweighted","Weighted"])

利用加权函数得到的模型对 10 rad/s ~ 100 rad/s 频带的动态匹配效果较好。

# 输入参数

G - 输入系统
动态系统模型

输入系统,指定为动态系统模型,例如 SS 模型。

系统可以是连续或离散的。对于离散输入系统,balancmr 内部利用双线性变换的方法将其转换为连续系统。

系统同样可以是稳定或不稳定的。对于不稳定的输入系统,balancmr 内部利用模态分解将其分解为稳定部分和不稳定部分。

数据类型: LTISystem

order - 降阶后系统阶数
正整数

降阶后系统模型阶数,指定为正整数。

数据类型: Integer

# 关键词=参数

MaxError - 误差边界
正实数

降阶后系统 Hankel 奇异值之和与原系统的最大误差,指定为正实数。

数据类型: Real

Weights - 加权函数
元组

可选的 1×2 LTI 权重元组 Wout(输出)和 Win(输入),指定为 (Wout,Win) 。每个权重必须稳定、相位最小且可逆的 LTI 系统。提供这些权重后,balancmr 会计算一个简化模型,该模型能最大限度地减小以下系统的 Hankel 奇异值:

默认权重都是单元矩阵。

数据类型: Tuple

# 输出参数

GRed - 降阶系统
状态空间模型

降阶系统模型。

数据类型: SS

RedInfo - 结构体
BalancmrInfo 结构体

类型为 BalancmrInfo 的结构体,包含三个字段:

  • RedInfo.ErrorBound: 的界限
  • RedInfo.StabSV: G 稳定部分的 Hankel 奇异值
  • RedInfo.UnstabSV: G 不稳定部分的 Hankel 奇异值

数据类型: BalancmrInfo

# 算法

给定一个系统的状态空间(A,B,C,D)和 k(所需的简化阶数),以下步骤将产生一个相似性变换,将原始状态空间系统截断为第 阶简化模型。

  1. 计算可控性和可观测性 Gramian 矩阵的 SVD (奇异值分解):
  1. 计算 Gramian 矩阵的平方根 (左/右特征向量):
  1. 计算 的 SVD:
  1. 那么最终的 阶简化模型的左右变换为:
  1. 最后

# 另请参阅

schurmr | hankelsv