主要内容

处理多变量系统:识别和分析

这个示例展示了如何处理多个输入和输出通道(MIMO数据)的数据。突出显示常见操作,如查看MIMO数据、估计和比较模型以及查看相应的模型响应。

数据集

我们先看看SteamEng的数据集。

负载Steameng.

这个数据集是从实验室规模的蒸汽机中收集的。它有输入压力蒸汽(实际上压缩空气)的控制阀后,和磁化电压通过发电机连接到输出轴上。

输出是产生电压在发电机和转速发电机(产生的AC电压的频率)。采样时间为50毫秒。

首先将测量的通道收集到一个iddata.目的:

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

让我们看一下数据

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

图中包含2个轴对象。轴对象1带标题GenVolt包含类型线的对象。这个对象表示untitled1。带有标题Pressure的axis对象2包含一个类型为line的对象。这个对象表示untitled1。

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

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

绘图(Steam(:,2,1))

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

情节(蒸汽(:2 2))

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

阶跃和脉冲响应

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

mi =冲动(蒸汽、50);clf,步骤(mi)

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

对置信区的回应

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

ShowConfidence(Impulseplot(MI),3)

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

显然,非对角线影响占主导地位(比较Y-SCALES!),这是,GenVolt主要受Maguolt.(没有太多的动态)和速度主要取决于压力.显然来自Maguolt.速度不是很重要。

Two-Input-Two-Output模型

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

议员= ss(蒸汽(摘要)
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.199 0.4848 -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.3028 - -0.09415 0.1033 - -1.617 x2 x3 x4 -0.04476 - -2.681 C = (x1, x2) x3 x4 GenVolt -16.39 0.3767 -0.7566 2.808参数化:自由形式(所有系数在A, B, C自由)。使用“idssdata”、“getpvec”、“getcov”等参数及其不确定性。状态:在时域数据上使用SSEST估计。拟合估计数据:[86.9;74.84]%(预测焦点)FPE: 3.896e-05, MSE: 0.01414

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

h = stepplot (mi,“b”国会议员,“r”2);直接估算的%蓝色,红色的红色展示(H)

图中包含4个轴对象。轴对象1,标题来自:压力包含2个对象的类型线。这些对象代表mi mp。axis对象2包含2个类型为line的对象。这些对象代表mi mp。轴对象3标题来自:MagVolt包含2个类型线对象。这些对象代表mi mp。axis对象4包含2个类型为line的对象。这些对象代表mi mp。

与所示置信范围内允许的变化一致。

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

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

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

该模型非常擅长再现验证数据的生成电压,并且还可以为速度进行合理的作业。(使用下拉菜单来查看不同输出的适合。)

光谱分析

同样地,对频率响应的比较MP.用谱分析估计给出:

msp = spa(蒸汽);

波德(msp, mp)

CLF,BODE(MSP,“b”国会议员,“r”)

图包含8个轴对象。轴对象1,标题来自:压力包含2个对象的类型线。这些对象代表MSP,MP。axis对象2包含2个类型为line的对象。这些对象代表MSP,MP。轴对象3包含2个类型的线。这些对象代表MSP,MP。axis对象4包含2个类型为line的对象。这些对象代表MSP,MP。带有标题的轴对象5来自:Maguolt包含2个类型的类型。 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对进行仔细查看。你也可以选择“特征:置信区域”来表示预兆图的可靠性。

和之前一样,来自Maguolt.速度是微不足道的,难以估计。

Single-Input-Single-Output模型的输出

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

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

m1 =特遣部队(蒸汽(摘要,“速度”“压力”),2,1);% TF模型具有2个极点1个零M2 = TFEST(Steam(1:250,1,2),1,0)%简单的TF模型,1杆。
M2 =从输入“Maguolt”输出“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个轴对象。坐标轴对象1包含3个类型为line的对象。这些对象代表验证数据(GenVolt), m2: 80.33%, mp: 83.55%。axis对象2包含3个类型为line的对象。这些对象表示验证数据(速度),m1: 47.2%, mp: 39.33%。

SISO模型与完整模型相比。让我们现在比较奈奎斯特图。M1是蓝色的,M2是绿色的,MP.是红色的。注意,排序是自动的。MP.描述所有输入输出对,而M1只包含压力速度M2只包含Maguolt.GenVolt

CLF SHOWCONFENCE(NYQUISTPLOT(M1,“b”,m2,‘g’国会议员,“r”), 3)

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

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

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

双输入单输出模型

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

M3 = ARMAX(Steam(1:250,“GenVolt”:)'na',4,'NB',[4 4],'nc'2,“朝鲜”,[1 1]);M4 = TFEST(Steam(1:250,“GenVolt”,:),2,1);比较(Steam(251:450),MP,M3,M4,M2)

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

大约10%的改善是可能的,包括投入压力在模型中M3(离散时间)和M4(连续时间),相比M2只使用Maguolt.作为输入。

合并的输出模型

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

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

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

显然,“偏离对角线”模型毫米执行像M1M2在解释输出时。