使用正确的模型表示
这个例子展示了使用LTI模型的一些最佳实践。
哪种表示法最适合计算?
使用控制系统工具箱™软件,您可以用四种不同的方式表示LTI系统:
传递函数
Zero-pole-gain (ZPK)
状态空间
频率响应数据
虽然TF和ZPK表示法紧凑且便于显示,但出于以下几个原因,它们并不适合用于系统操作和分析:
使用TF和ZPK模型通常会导致高阶多项式,其评估可能受到不准确性的困扰。
TF和ZPK表示对于操纵MIMO系统是低效的,并且倾向于膨胀模型顺序。
下面说明了其中一些限制。由于这些限制,您应该对大多数涉及LTI模型的计算使用SS或FRD表示。
高阶传递函数的缺陷
涉及高阶传递函数的计算可能会出现严重的精度损失,甚至溢出。即使是两个传递函数的简单乘积也能得到令人惊讶的结果,如下所示。
加载并绘制两个离散传递函数Pd
而且Cd
分别为9阶和2阶:
%负载Pd,Cd模型负载numdemoPdCd绘制它们的频率响应波德(Pd,“b”光盘,“r”),网格图例(“Pd”,“Cd”)
接下来,使用TF, ZPK, SS和FRD表示计算开环传递函数L = Pd*Cd:
Ltf = Pd * Cd;%特遣部队Lzp = zpk(Pd) * Cd;% ZPKLss = ss(Pd) * Cd;%党卫军W = logspace(-1,3,100);Lfrd = frd(Pd,w) * Cd;%的朋友
最后,比较得到的四种模型的频响幅度:
σ(Ltf“b——”Lzp,‘g’Lss,“:”Lfrd,“m——”, {1 e 1, 1 e3});传奇(“助教”,“ZPK”,“党卫军”,“朋友”)
来自ZPK、SS和FRD表示的响应紧密匹配,但来自TF表示的响应在100 rad/sec以下是起伏和不稳定的。为了理解传递函数形式的精度损失,可以比较Pd和Cd在z=1附近的极/零映射:
pzplot (Pd,“b”光盘,“r”);标题(Pd(蓝色)和Cd(红色)的极点/零点映射);轴([0.4 1.05 -1 1])
注意在z=1附近有多个根。由于多项式值的相对精度在根附近下降,传递函数值在z=1附近的相对误差超过100%。频率低于100 rad/s映射到| z 1
|<1e-3,这解释了低于100 rad/s的不稳定结果。
表示之间来回转换的陷阱
您可以使用命令轻松地将任何LTI模型转换为传递函数、零极增益或状态空间形式特遣部队
,zpk
,党卫军
,分别。例如,给定一个双输入、双输出随机状态空间模型HSS1
HSS1 = rss(3,2,2);
可以用。得到它的传递函数
HTF = tf(HSS1);
然后把它转换回状态空间
HSS2 = ss(HTF);
但是,要注意这种来回转换是昂贵的,可能会导致一些精度损失,并人为地增加MIMO系统的模型顺序。例如,的顺序HSS2
是的两倍HSS1
因为6是一个分母为3次的2x2传递矩阵的一般阶:
订单(HSS1)
Ans = 3
订单(HSS2)
Ans = 6
为了了解模型顺序的差异,比较两个模型的极/零映射:
次要情节(211)pzmap (HSS1,“b”)标题(“HSS1的极点和零点”);次要情节(212)pzmap (HSS2,“r”)标题(“HSS2的极点和零点”);
请注意HSS2中通过在极点/零映射中使用x在o中描述的取消极点/零对。您可以使用该命令minreal
消除极点/零对,从HSS2中恢复一个三阶最小状态空间模型:
HSS2 = minreal(HSS2);
3个州被移除。
订单(HSS2_min)
Ans = 3
检查HSS1
而且HSS2_min
通过绘制这两个模型之间的相对间隙来重合:
clf Gap = HSS1-HSS2_min;σ(HSS1差距),网格
警告:频率响应相对精度较差。这可能是因为响应在所有频率上几乎为零或无穷大,或者因为状态空间实现是病态的。使用“prescale”命令进行进一步调查。
传奇(“HSS1”,“差距HSS1 vs最小HSS2”,“位置”,“最佳”)
在所有频率上,差距(绿色曲线)都非常小。请注意,σ
警告说差距
图是“嘈杂的”,因为差异是如此之小,以至于它本质上是由舍入误差组成的。
因为提取最小实现在数值上很棘手,所以应该避免创建非最小模型。另请参阅防止系统互连中的状态重复获取相关见解。