从单输入/单输出(SISO)数据中估计和验证简单的连续时间传递函数,以找到最能描述系统动力学的函数。
完成本教程后,您将能够使用系统识别应用程序完成以下任务:
从MATLAB导入数据对象®工作空间进入应用程序。
绘制和处理数据。
从数据中估计和验证低阶连续时间模型。
导出模型到MATLAB工作空间。
使用Simulink对模型进行仿真金宝app®软件
请注意
本教程使用时域数据来演示如何估计线性模型。同样的工作流程也适用于频域数据的拟合。
本教程使用数据文件proc_data.mat
,包含200个模拟的单输入/单输出(SISO)时域数据样本。输入是一个在-1和1之间振荡的随机二进制信号。输入端加入白噪声(对应于负载扰动),标准差为0.2,信噪比约为20 dB。这个数据是用一个欠阻尼模态(复极点)的二阶系统模拟的,峰值响应为1 rad/s:
模拟的采样时间为1秒。
连续时间过程模型是低阶传递函数,它使用静态增益描述系统动力学,系统输出响应输入之前的时间延迟,以及与极点和零点相关的特性时间常数。这种模型在行业中很流行,经常用于PID控制器的整定,例如。过程模型参数具有物理意义。
您可以通过改变极点数、添加积分器或包含时间延迟或零来指定不同的流程模型结构。在这个工具箱中,您可以指定的过程模型的最高顺序是三个,极点可以是实的,也可以是复杂的(欠阻尼模式)。
一般来说,线性系统的特征是传递函数G,这是一个接受输入的操作符u到输出y:
对于连续时间系统,G把输入的拉普拉斯变换联系起来U(年代)和输出Y(年代),如下所示:
在本教程中,您将进行估算G使用不同的流程模型结构。
例如,下面的模型结构是一阶连续时间模型,其中K为静态增益,Tp1是一个时间常数,并且Td为输入输出延迟:
载入数据proc_data.mat
在MATLAB命令窗口中输入以下命令:
负载proc_data
该命令将数据作为数据对象加载到MATLAB工作空间中z
。有关iddata
对象,请参见相应的参考页。
要打开系统识别应用程序,在MATLAB命令窗口中输入以下命令:
systemIdentification
默认会话名称,无标题的
,显示在标题栏中。
您可以从MATLAB工作空间导入数据对象到应用程序。
您必须已经将示例数据加载到MATLAB中,如加载数据到MATLAB工作区,然后打开应用程序,如打开系统识别应用。
如果您没有执行这些步骤,点击这里完成它们。
将数据对象导入系统识别应用程序:
选择导入数据>数据对象。
此操作将打开“导入数据”对话框。
在“导入数据”对话框中,指定以下选项:
对象——输入z
作为MATLAB变量的名称,即时域数据对象。新闻输入。
数据名称—使用默认名称z
,它与要导入的数据对象的名称相同。该名称在导入操作完成后标记系统识别应用程序中的数据。
起始时间——输入0
作为开始时间。此值指定时间图上时间轴的起始值。
样品时间——输入1
为连续采样之间的时间,单位为秒。该值表示实验中实际的采样时间。
导入数据对话框现在类似下图。
点击进口将数据添加到系统识别应用程序中。应用程序添加一个图标来表示数据。
点击关闭关闭“导入数据”对话框。
在本教程的这一部分中,您将评估数据并处理它以进行系统标识。你学习如何:
图数据。
通过减去输入和输出的平均值来去除偏移量。
将数据分成两部分。数据的一部分用于模型估计,另一部分用于模型验证。
从每个信号中减去平均值的原因是,通常情况下,要建立线性模型来描述偏离物理平衡的响应。对于稳态数据,可以合理地假设信号的平均水平对应于这种平衡。因此,您可以在没有对物理单位的绝对平衡水平建模的情况下寻找零附近的模型。
您必须已经将数据导入系统识别应用程序,如导入数据对象到系统识别应用程序。
如果您没有执行此步骤,点击这里来完成它。
绘制和处理数据:
选择时间曲线图复选框打开“时间图”窗口。
底部的坐标轴显示输入数据——一个随机的二进制序列,顶部的坐标轴显示输出数据。
接下来的两个步骤演示了如何修改图中的轴限制。
要修改输入数据的垂直轴限制,请选择选项>设置轴的限制在时间图图形窗口。
在“时间图的限制”对话框中,设置新的输入数据通道的垂直轴限制u1(-1.5 - 1.5)。点击应用和关闭。
请注意
在“时间情节的限制”对话框中的另外两个字段,时间和日元,让您分别设置时间轴和输出通道轴的轴限。您还可以通过选择相应的选项来指定每个轴为对数或线性。
更新后的时间图如下图所示。
在系统识别应用程序中,选择<——预处理>快速启动执行以下四个动作:
减去每个通道的平均值。
将数据分成两部分。
指定数据的第一部分为估计数据(或工作数据).
指定数据的第二部分为验证数据。
学习更多的知识。有关支持的数据处理操作(如重新采样和过滤数据金宝app)的信息,请参见数据进行预处理。
在本教程的这一部分,您将使用以下结构来评估模型:
您必须已经处理了估计的数据,如绘制和处理数据。
如果您没有执行此步骤,点击这里来完成它。
为了确定二阶传递函数:
在系统识别应用程序中,选择估计>流程模型打开“流程模型”对话框。
在模型传递函数区域,指定以下选项:
下波兰人中,选择2
和欠阻尼的
。
这个选择将模型传递函数更新为可以包含复杂极点的二阶模型结构。
确保零和积分器复选框被清除以从模型中排除零和积分器(自调节)。
的参数流程模型对话框的区域现在显示了四个活动参数:K
,太瓦
,ζ
,道明
。在最初的猜测区域,保持默认值自动选择
选项计算初始参数值期间的估计。的最初的猜测列显示汽车
。
保持默认界限值,指定每个参数的最小值和最大值。
提示
如果您知道参数的可能值的范围,则可以将这些值键入到相应的值中界限字段,以帮助估计算法。按下输入键在指定值之后。
估计算法保持默认设置:
干扰模型- - - - - -没有一个
意味着算法不估计噪声模型。该选项还设置焦点来模拟
。
焦点- - - - - -模拟
意味着估计算法不使用噪声模型来衡量在不同频率范围内的数据拟合程度的相对重要性。相反,该算法使用特定频率范围内的输入频谱来衡量该频率范围内拟合的相对重要性。
提示
的模拟
设置被优化以识别您计划用于输出模拟的模型。如果您计划将您的模型用于输出预测或控制应用程序,或使用噪声模型改进参数估计,请选择预测
。
初始条件- - - - - -汽车
即算法对数据进行分析,选择最优的方法来处理系统的初始状态。如果结果不佳,可以尝试设置一个特定的方法来处理初始状态,而不是自动选择它。
协方差- - - - - -估计
意味着该算法计算的参数不确定性在图上显示为模型置信区域。
应用程序为模型分配一个名称,如的名字字段(位于对话框的底部)。默认情况下,名称是首字母缩写P2DU
,表示两个极点(P2
),延误(D
)和欠阻尼模式(U
).
点击估计添加模型P2DU
到系统识别应用程序。
如果您确切地知道参数值,则可以在价值列。选择相应的已知的复选框。
如果您知道参数的近似值,您可以通过在最初的猜测列。在这种情况下,保留已知的复选框清除,以允许评估对这个初始猜测进行微调。
例如,修正时间延迟值道明
在2
S,将此值输入价值“流程模型”对话框中参数表的字段。然后选择相应的已知的复选框。
您可以分析以下图来评估模型的质量:
在时间图上比较模型输出和测量输出
输出残差的自相关,以及输入和输出残差的互相关
您必须已经估计了模型,如使用默认设置估计二阶传递函数。
如果您没有执行此步骤,点击这里来完成它。
检查模型的输出。您可以使用模型-输出图来检查模型输出与验证数据集中的测量输出是否匹配。一个好的模型是最简单的模型,它能最好地描述动态并成功地模拟或预测不同输入的输出。
要生成模型输出图,请选择模型输出复选框。如果图形为空,则在“系统识别”窗口中单击模型图标,将模型显示在图形上。
System Identification Toolbox™软件使用输入验证数据作为模型的输入,并在输出验证数据之上绘制模拟输出。前面的图表明,模型输出与验证数据输出非常吻合。
的最适合模型输出图的区域显示了模型输出和验证数据输出之间的一致性(以百分比表示)。
回想一下,数据是用以下的欠阻尼模态(复极点)二阶系统模拟的,如中所述数据描述,峰值响应为1 rad/s:
由于在模拟过程中,数据中包含了输入噪声,估计的模型不能准确地再现用于模拟数据的模型。
检查模型残差。您可以通过检查模型残差的行为来验证模型。
要生成残留分析图,请选择模型残油复选框。
顶部的轴显示了输出的残差的自相关(白度测试)。水平尺度是滞后的数量,滞后是估计相关性的信号之间(样本)的时间差。在置信区间内的任何波动都被认为是微不足道的。一个好的模型在置信区间内应该有一个残差自相关函数,表明残差是不相关的。然而,在这个例子中,残差似乎是相关的,这是自然的,因为噪声模型被用来使残差为白色。
底部的轴显示了残差与输入的相互关系。一个好的模型应该有与过去输入不相关的残差(独立性测试)。相关性证据表明,模型没有描述部分输出如何与相应的输入相关联。例如,当在延迟置信区间外有一个峰值时k,这意味着对输出的贡献y (t)这源于输入u (tk)模型没有恰当地描述。在这个例子中,残差和输入之间没有相关性。
因此,残差分析表明该模型是好的,但可能需要一个噪声模型。
在本教程的这一部分,您将估计一个二阶传递函数并包含一个噪声模型。通过包含一个噪声模型,可以优化预测应用程序的估计结果。
您必须已经估计了模型,如使用默认设置估计二阶传递函数。
如果您没有执行此步骤,点击这里来完成它。
估计带噪声的二阶传递函数:
如果流程模型对话框未打开,请选择估计>流程模型此操作打开“流程模型”对话框。
在模型传递函数区域,指定以下选项:
下波兰人中,选择2
和欠阻尼的
。这个选择将模型传递函数更新为可以包含复杂极点的二阶模型结构。确保零和积分器复选框被清除以从模型中排除零和积分器(自调节)。
干扰模型——设置为订单1
估计一个噪声模型H为连续时间的一阶ARMA模型:
的时间和地点D是一阶多项式吗e是白噪声。
此操作指定焦点作为预测
,提高了在噪声等级较低的频率范围内的精度。例如,如果在高频有更多的噪声,算法就不那么重视准确拟合数据的高频部分。
的名字-将模型名称编辑为P2DUe1
在系统识别应用程序中生成具有唯一名称的模型。
点击估计。
在“流程模型”对话框中,设置干扰模型来订单2
估计一个二阶噪声模型。
编辑的名字字段P2DUe2
在系统识别应用程序中生成具有唯一名称的模型。
点击估计。
在本教程的这一部分中,您将使用model Output和Residual Analysis图来评估模型性能。
您必须已经估计了模型,如使用默认设置估计二阶传递函数和具有复极点的二阶过程模型的估计。
如果您没有执行这些步骤,点击这里完成它们。
比较模型输出图。要生成模型输出图,请选择模型输出复选框。如果图形为空或图形上没有模型输出,请单击系统识别应用程序窗口中的模型图标,在图形上显示这些模型。
下面的模型输出图显示了默认情况下模拟的模型输出。在有噪声和无噪声的情况下,模型的模拟响应基本相同。因此,包含噪声模型并不影响模拟输出。
要查看预测的模型输出,请选择选项>比预测产量提前5步在模型输出绘图窗口中。
下面的模型输出图显示了的预测模型输出P2DUe2
(有二阶噪声模型)的预测输出优于其他两种模型(分别有一阶噪声模型和无噪声模型)的预测输出。
剩余分析图的比较。要生成残留分析图,请选择模型残油复选框。如果图形为空,则单击系统识别应用窗口中的模型图标,将这些模型显示在图形上。
P2DUe2
在残差分析图的置信范围内。
来查看残差P2DUe2
只删除模型P2DU
和P2DUe1
通过点击系统识别应用程序中相应的图标,从残差分析图。
残差分析图更新如下图所示。
白度测试P2DUe2
表明残差是不相关的,独立检验表明残差与输入不相关。这些测试表明P2DUe2
是一个很好的模型。
您可以查看数值参数值和模型的其他信息P2DUe2
右键单击系统识别应用程序中的模型图标。数据/模型信息对话框打开。
对话框的不可编辑区域列出了对应以下模型结构的模型系数:
这些系数与用来模拟数据的模型一致:
单击,查看系统传递函数的参数不确定度现在在“数据/模型信息”对话框中,并在MATLAB命令窗口中查看信息。
Kp = 0.99821 +/- 0.019982 Tw = 0.99987 +/- 0.0037697 Zeta = 0.10828 +/- 0.0042304 Td = 2.004 +/- 0.0029717
每个模型参数的1-标准偏差不确定性遵循+/-
的象征。
P2DUe2
还包括附加噪声项,其中H是二阶ARMA模型吗e白噪声:
软件显示噪音模型H作为两个多项式的比值,C (s) / D (s)
,地点:
C (s) = s ^ 2 + 2.186 (+ / - 0.08467) + 1.089 (+ / - 0.07951) D (s) = s ^ 2 + 0.2561 (+ / - 0.09044) + 0.5969 (+ / - 0.3046)
模型参数的1-标准差不确定性在每个参数值旁边的括号中。
您可以在MATLAB工作空间中对估计的模型进行进一步的分析。例如,如果模型是一个需要控制器的植物,您可以将该模型从MATLAB工作区导入到Control System Toolbox™产品中。此外,为了在Simulink软件中模拟您的模型(可能是更大的动态系统的一部分),您可以金宝app将该模型作为Simulink块导入。
在系统识别应用程序中创建的模型在MATLAB工作空间中不会自动可用。要使模型对其他工具箱、Simulink和系统识别工具箱命令可用,您必须将模型从系统识别应用程金宝app序导出到MATLAB工作空间。
出口的P2DUe2
模型,将模型图标拖动到到工作空间或单击出口在数据/模型信息对话框中。模型现在出现在MATLAB工作区浏览器中。
请注意
这个模型是idproc
模型对象。
在本教程中,您将创建一个简单的Simulink模型,该模型使用System 金宝appIdentification Toolbox库中的块来获取数据z
和模型P2DUe2
仿真软件。金宝app
要执行本教程中的步骤,必须在计算机上安装Simulink。金宝app
此外,您必须已经执行了以下步骤:
加载数据集,如加载数据到MATLAB工作区。
估计二阶过程模型,如具有复极点的二阶过程模型的估计。
将模型导出到MATLAB工作区,如中所述将模型导出到MATLAB工作区。
如果您没有执行这些步骤,点击这里完成它们。然后,拖z
和P2DUe2
图标的到工作空间或单击出口在数据/模型信息对话框中。数据和模型现在出现在MATLAB工作区浏览器中。
使用数据集的输入通道z
作为仿真模型输出的输入,在MATLAB命令窗口中输入如下:
z_input = z;%新建iddata对象。z_input。y = [];%设置输出通道%,空的。
或者,您可以指定任何输入信号。
学习更多的知识。有关表示系统标识数据信号的详细信息,请参见在MATLAB工作空间中表示数据。
在Simulink模型中添加块:金宝app
在MATLAB首页选项卡上,单击金宝app。
在Simuli金宝appnk开始页面中,单击空白模型。然后单击创建模型打开一个新的模型窗口。
在Simuli金宝appnk模型窗口中,单击打开库浏览器。在库浏览器中,选择系统辨识工具箱图书馆。窗口的右侧显示特定于“系统标识工具箱”产品的块。
提示
或者,要访问系统标识块库,输入slident
在MATLAB命令窗口中。
将以下System Identification Toolbox块拖到新模型窗口:
IDDATA沉块
IDDATA源块
IDMODEL模型块
在Simuli金宝appnk库浏览器中,选择金宝app>汇库,并将Scope块拖动到新模型窗口。
在Simuli金宝appnk模型窗口中,连接模块,如图所示。
接下来,配置这些块以从MATLAB工作空间获取数据,并设置模拟时间间隔和持续时间。
本过程指导您完成以下任务来配置模型块:
从MATLAB工作空间获取数据。
设置仿真时间间隔和持续时间。
在Simuli金宝appnk编辑器中,选择建模>模型设置>Ctrl + E模型设置。
在“配置参数”对话框中解算器subpane,停止时间字段,类型200
。点击好吧。
此值将模拟的持续时间设置为200秒。
双击“Iddata Source”块,打开“Source block Parameters: Iddata Source”对话框。然后,在IDDATA对象字段:
z_input
这个变量是包含输入数据的MATLAB工作区中的数据对象。
提示
作为一个快捷方式,您可以将变量名从MATLAB Workspace浏览器拖放到IDDATA对象字段。
点击好吧。
双击Idmodel块,打开功能块参数:Idmodel对话框。
在。中输入以下变量名模型变量字段:
P2DUe2
这个变量表示MATLAB工作空间中模型的名称。
清除添加噪声复选框以排除模拟中的噪声。点击好吧。
当添加噪声时,Simulink从金宝appNoiseVariance
属性,并相应地给模型添加噪声。仿真根据噪声模型来传播噪声H这是用系统动力学估计的:
点击好吧。
双击“Iddata Sink”块,打开“Sink block Parameters: Iddata Sink”对话框。在。中输入以下变量名IDDATA名字字段:
z_sim_out
类型1
在样品时间(秒)。字段设置输出数据的样本时间,以匹配输入数据的样本时间。
点击好吧。
对Simulink模型的更改如下图所示。金宝app
在Simuli金宝appnk编辑器中,选择模拟>运行。
双击Scope块显示模型输出的时间图。
在MATLAB Workspace浏览器中,注意这个变量z_sim_out
将模型输出存储为iddata
对象。您在配置Iddata Sink块时指定了这个变量名。
这个变量存储模型的模拟输出,现在可以进行进一步的处理和探索。