主要内容

分析多变量系统中的数据并识别模型

这个例子展示了如何处理具有多个输入和输出通道的数据(MIMO数据)。重点介绍了常用操作,如查看MIMO数据、估计和比较模型以及查看相应的模型响应。

数据集

我们从SteamEng数据集开始。

负载SteamEng

该数据集是从实验室规模的蒸汽机中收集的。它有输入压力的蒸汽(实际上是压缩空气)经过控制阀,并磁化电压在发电机上方连接输出轴。

输出为产生的电压在发电机和转速(所产生交流电压的频率)。采样时间为50 ms。

首先收集测量通道到一个iddata对象:

steam = iddata([GenVolt,Speed],[Pressure,MagVolt],0.05);蒸汽。InputName = {“压力”“MagVolt”};蒸汽。OutputName = {“GenVolt”“速度”};

让我们看一看数据

情节(蒸汽(:,1,1))

图中包含2个轴对象。标题为GenVolt的坐标轴对象1包含一个类型为line的对象。该对象表示untitled1。标题为Pressure的Axes对象2包含一个类型为line的对象。该对象表示untitled1。

情节(蒸汽(:,1,2))

图中包含2个轴对象。标题为GenVolt的坐标轴对象1包含一个类型为line的对象。该对象表示untitled1。标题为MagVolt的Axes对象2包含一个类型为line的对象。该对象表示untitled1。

情节(蒸汽(:2 1))

图中包含2个轴对象。带有Speed标题的Axes对象1包含一个line类型的对象。该对象表示untitled1。标题为Pressure的Axes对象2包含一个类型为line的对象。该对象表示untitled1。

情节(蒸汽(:2 2))

图中包含2个轴对象。带有Speed标题的Axes对象1包含一个line类型的对象。该对象表示untitled1。标题为MagVolt的Axes对象2包含一个类型为line的对象。该对象表示untitled1。

阶跃和脉冲响应

了解动态的第一步是查看直接从数据估计的不同通道之间的阶跃响应:

Mi =冲量(蒸汽,50);clf,步骤(mi)

图中包含4个轴对象。轴对象1的标题From:压力包含一个类型为line的对象。该对象表示mi。Axes对象2包含一个line类型的对象。该对象表示mi. axis对象3,标题From: MagVolt包含一个line类型的对象。该对象表示mi。Axes对象4包含一个line类型的对象。该对象表示mi。

有信心区域的反应

为了查看响应的显著性,可以使用脉冲图,置信区域对应于3个标准差:

showConfidence (impulseplot (mi), 3)

图中包含4个轴对象。轴对象1带有标题From:压力包含2个类型为line的对象。该对象表示mi。坐标轴对象2包含2个line类型的对象。该对象表示mi. axis对象3,标题From: MagVolt包含2个类型为line的对象。该对象表示mi。Axes对象4包含2个line类型的对象。该对象表示mi。

显然,非对角线的影响占主导地位(比较y刻度!)也就是说,GenVolt主要受以下因素影响MagVolt(没有太多动态)和速度主要取决于压力.显然,来自MagVolt速度不是很重要。

双输入双输出模型

一个快速的第一个测试也是寻找一个默认的连续时间状态空间预测误差模型。只使用前半部分的数据进行估计:

蒸汽(1:250)
mp =连续时间识别状态空间模型:dx / dt = x (t) + B u e (t) + K (t) y (t) = C x (t) + D u (t) + e (t) = (x1, x2) x3 x4 x1 x2 -29.43 -4.561 0.5994 -5.2 0.4849 -0.8662 -4.101 -2.336 x3 x4 -3.855 2.839 5.084 -8.566 -12.13 0.9224 1.818 -34.29 B =压力MagVolt x1 -1.566 - 0.2953 -0.3027 - -0.09415 0.1033 - -1.617 x2 x3 x4 -0.04477 - -2.681 C = (x1, x2) x3 x4 GenVolt速度-16.39 - 0.3767 -0.7566 - 2.808 -5.623 - 2.246 -0.5356 - 3.423 D =压力MagVolt GenVolt 0 0速度0 0 K = GenVolt速度x1 1.526 - 2.132 -0.02311 - 5.195 -0.3555 - 0.08529 x2 x3 x4 1.7870.03215参数化:自由形式(A、B、C中所有系数自由)。参数及其不确定性使用“idssdata”、“getpvec”、“getcov”表示。状态:在时域数据上使用SSEST进行估计。拟合估计数据:[86.9;74.84]%(预测焦点)FPE: 3.897e-05, MSE: 0.01414

与直接从数据估计的阶跃响应进行比较:

H = stepplot(mi,“b”国会议员,“r”2);蓝色为直接估计,红色为mpshowConfidence (h)

图中包含4个轴对象。轴对象1带有标题From:压力包含2个类型为line的对象。这些对象表示mi, mp。坐标轴对象2包含2个line类型的对象。这些对象表示mi, mp。来自:MagVolt包含2个类型为line的对象。这些对象表示mi, mp。Axes对象4包含2个line类型的对象。这些对象表示mi, mp。

在所示置信范围内允许的变化是良好的。

为了测试状态空间模型的质量,在未用于估计的数据部分进行模拟,并比较输出:

比较(蒸汽(251:450)议员)

图中包含2个轴对象。坐标轴对象1包含2个line类型的对象。这些对象表示验证数据(GenVolt), mp: 83.55%。坐标轴对象2包含2个line类型的对象。这些对象表示验证数据(速度),mp: 39.33%。

该模型非常擅长为验证数据重现生成的电压,并且在速度上也做了合理的工作。(使用下拉菜单查看不同输出的匹配度。)

光谱分析

相似的,频率响应的比较国会议员用光谱分析估计得到:

MSP = spa(蒸汽);

波德(msp, mp)

clf,波德(msp,“b”国会议员,“r”

图中包含8个轴对象。轴对象1带有标题From:压力包含2个类型为line的对象。这些对象表示msp, mp。坐标轴对象2包含2个line类型的对象。这些对象表示msp, mp。坐标轴对象3包含2个line类型的对象。这些对象表示msp, mp。Axes对象4包含2个line类型的对象。这些对象表示msp, mp。轴对象5标题从:MagVolt包含2个类型为line的对象。 These objects represent msp, mp. Axes object 6 contains 2 objects of type line. These objects represent msp, mp. Axes object 7 contains 2 objects of type line. These objects represent msp, mp. Axes object 8 contains 2 objects of type line. These objects represent msp, mp.

您可以右键单击该图并选择不同的I/O对以查看近况。您也可以选择“特征:置信区域”来获得预兆图的可靠性图片。

如前所述,从MagVolt速度是微不足道且难以估计的。

单输入单输出(SISO)模型

这个数据集很快就给出了好的模型。否则,您常常必须尝试某些通道的子模型,以查看重大影响。工具箱对象为此类工作中的必要簿记提供了充分支持。金宝app输入和输出名称是其中的核心。

阶跃响应表明MagVolt主要的影响GenVolt压力主要影响速度.为此构建两个简单的SISO模型:在选择通道时可以同时使用名称和数字。

M1 = tfest(蒸汽(1:250,“速度”“压力”)、2、1);% TF模型与2极点1零M2 = tfest(蒸汽(1:250,1,2),1,0)%简单的1极TF模型。
m2 =从输入“MagVolt”到输出“GenVolt”:18.57 --------- s + 43.53连续时间识别传递函数。参数化:极点数:1零数:0自由系数数:2参数及其不确定性用“tfdata”、“getpvec”、“getcov”表示。状态:在时域数据上使用TFEST估计。拟合估计数据:73.34% FPE: 0.04645, MSE: 0.04535

将这些模型与MIMO模型mp进行比较:

比较(蒸汽(251:450),m1, m2, mp)

图中包含2个轴对象。Axes对象1包含3个line类型的对象。这些对象表示验证数据(GenVolt), m2: 80.33%, mp: 83.55%。坐标轴对象2包含3个line类型的对象。这些对象表示验证数据(速度),m1: 47.2%, mp: 39.33%。

SISO模型与完整模型比较良好。现在让我们比较一下奈奎斯特的情节。m1是蓝色的,平方米是绿色的国会议员是红色的。注意,排序是自动的。国会议员描述所有输入输出对,而m1只包含压力速度而且平方米只包含MagVoltGenVolt

clf showConfidence (nyquistplot (m1,“b”平方米,‘g’国会议员,“r”), 3)

图中包含4个轴对象。轴对象1带有标题From:压力包含5个类型为line的对象。该对象表示mp。Axes对象2包含10个line类型的对象。这些对象代表m1, mp。轴对象3标题来自:MagVolt包含10个类型为line的对象。这些对象代表m2, mp。Axes对象4包含5个line类型的对象。该对象表示mp。

SISO模型很好地再现了它们各自的输出。

经验法则是,当添加更多输出时,模型拟合变得更加困难(需要解释更多!),而当添加更多输入时,模型拟合变得更加简单。

Two-Input-Single-Output模型

要做好输出工作GenVolt,两种输入都可以使用。

M3 = armax(蒸汽(1:250,“GenVolt”:)“na”4“注”(4 - 4),“数控”,2,“朝鲜”[1]);M4 = tfest(蒸汽(1:250,“GenVolt”:), 2、1);比较(蒸汽(251:450),mp, m3, m4, m2)

图中包含2个轴对象。Axes对象1包含5个line类型的对象。这些对象代表验证数据(GenVolt), mp: 83.55%, m3: 90.18%, m4: 89.38%, m2: 80.33%。坐标轴对象2包含2个line类型的对象。这些对象表示验证数据(速度),mp: 39.33%。

如果包括输入,可能会有大约10%的改进压力在模型中m3(离散时间)和m4(连续时间),与平方米使用justMagVolt作为输入。

合并SISO模型

如果需要,两种SISO模型m1而且平方米可以放在一起作为一个“非对角线”模型,首先创建一个零虚拟模型:

mdum = idss (0 (2, 2), 0 (2, 2), 0 (2, 2), 0 (2, 2));mdum。InputName = steam.InputName;mdum。OutputName = steam.OutputName;mdum。Ts = 0;连续时间模型M12 = [idss(m1),mdum(“速度”“MagVolt”));%添加输入。%从两个输入到速度M22 = [mdum(“GenVolt”“压力”), ids (m2)];%添加输入。%从两个输入到GenVoltMm = [m12;m22];将输出添加到2 × 2模型。比较(蒸汽(251:450)、国会议员、毫米)

图中包含2个轴对象。Axes对象1包含3个line类型的对象。这些对象表示验证数据(GenVolt), mp: 83.55%, mm: 80.33%。坐标轴对象2包含3个line类型的对象。这些对象表示验证数据(Speed), mp: 39.33%, mm: 47.2%。

显然是“非对角线”模式毫米执行像m1而且平方米在解释输出时。