# 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(所需的简化阶数),以下步骤将产生一个相似性变换,将原始状态空间系统截断为第
- 计算可控性和可观测性 Gramian 矩阵的 SVD (奇异值分解):
- 计算 Gramian 矩阵的平方根 (左/右特征向量):
- 计算
的 SVD:
- 那么最终的
阶简化模型的左右变换为:
- 最后