专栏
标签
使用Syslab的TyControlSystems函数库存在一些问题
功能建议
发布于 2026-03-19 15:55:23
查看 15过去101天

执行:info = balred(sys, mor_order)
报错:对于状态空间矩阵 (A, B, C, D),B 的列数(1)与 D 的列数(7)必须一致。
但实际上矩阵A, B, C, D没有任何问题,对应系统矩阵的行数、列数已再三检查过没有问题

而执行:info, rsys = balred(sys)
也会报错:MethodError: no method matching iterate(::TyControlSystemsCore.BalredInfo)
但执行:info = balred(sys)
正常运行,但只能返回Hankel奇异值信息,这样的话不能获得balred()后对应矩阵

已询问MWorks Copilot、豆包,没能解决问题
按照Syslab使用手册编写案例函数没有问题,但是使用自己的算例就会报错。是否是该函数不支持多于1列以上B矩阵的运算?

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境
科学计算
附件 1 个附件(13kb)

全部回答 1

发布于 2026-03-20 13:36:31

您好,当前balred暂不支持MIMO系统模型降阶,您可以参考以下方法来实现。

using TyControlSystems

A = [
    -2   0.5   0
     1  -1    0.2
     0   0.1  -3
]

B = [
    1    0
    0    1
    0.5  0.3
]

C = [1  0.8  0.2]
D = [0.1 0.05]
#对第一个输入做模型降阶
sys1 = ss(A, B[:, 1:1], C, D[:, 1:1])
sys1r, info1 = balred(sys1, 1)
#对第二个输入做模型降阶
sys2 = ss(A, B[:, 2:2], C, D[:, 2:2])
sys2r, info2 = balred(sys2, 1)
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天