主要内容

使用正确的模型表示

这个例子展示了使用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”“位置”“最佳”

在所有频率上,差距(绿色曲线)都非常小。请注意,σ警告说差距图是“嘈杂的”,因为差异是如此之小,以至于它本质上是由舍入误差组成的。

因为提取最小实现在数值上很棘手,所以应该避免创建非最小模型。另请参阅防止系统互连中的状态重复获取相关见解。