目录

从单输入/单输出 (SISO) 数据估计和验证简单的连续时间传递函数,以找到最能描述系统动态的函数。
完成本教程后,您将能够使用系统识别应用程序完成以下任务:
本教程使用时域数据来演示如何估计线性模型。 相同的工作流程适用于拟合频域数据。
本教程使用数据文件 proc_data.mat,其中包含 200 个模拟单输入/单输出 (SISO) 时域数据样本。 输入是在 -1 和 1 之间振荡的随机二进制信号。白噪声(对应于负载干扰)以 0.2 的标准偏差添加到输入中,这导致信噪比约为 20 dB . 使用具有欠阻尼模式(复极点)和 1 rad/s 峰值响应的二阶系统模拟此数据:

模拟的采样时间为 1 秒。
连续时间过程模型是使用静态增益、系统输出响应输入之前的时间延迟以及与极点和零点相关的特征时间常数来描述系统动态的低阶传递函数。 例如,此类模型在行业中很受欢迎,并且通常用于调整 PID 控制器。 过程模型参数具有物理意义。
您可以通过改变极点数、添加积分器或包括时间延迟或零来指定不同的过程模型结构。 您可以在此工具箱中指定的最高过程模型阶数为三,极点可以是实数或复数(欠阻尼模式)。
通常,线性系统的特征在于传递函数 G,它是将输入 u 带到输出 y 的算子:

对于连续时间系统,G 将输入 U(s) 和输出 Y(s) 的拉普拉斯变换联系起来,如下所示:

在本教程中,您将使用不同的流程模型结构来估计 G。
例如,以下模型结构是一阶连续时间模型,其中 K 是静态增益,Tp1 是时间常数,Td 是输入到输出延迟:

通过在 MATLAB 命令行窗口中键入以下命令来加载 proc_data.mat 中的数据:
load proc_data
此命令将数据作为数据对象 z 加载到 MATLAB 工作区。 有关 iddata 对象的更多信息,请参阅相应的参考页面。
要打开 System Identification 应用程序,请在 MATLAB 命令行窗口中键入以下命令:
systemIdentification
默认会话名称 Untitled 出现在标题栏中。

您可以将数据对象从 MATLAB 工作区导入应用程序。
您必须已将示例数据加载到 MATLAB(如将数据加载到 MATLAB 工作区中所述),并已打开应用程序(如打开系统识别应用程序中所述)。
如果您尚未执行这些步骤,请单击此处click here完成它们。
要将数据对象导入系统标识应用程序:
1.选择导入数据 > 数据对象。
此操作将打开“导入数据”对话框。

2. 在“导入数据”对话框中,指定以下选项:
对象 - 输入 z 作为 MATLAB 变量的名称,该变量是时域数据对象。 按 Enter。
数据名称 - 使用默认名称 z,它与您正在导入的数据对象的名称相同。 导入操作完成后,此名称标记系统标识应用程序中的数据。
开始时间 - 输入 0 作为开始时间。 该值指定时间图上时间轴的起始值。
采样时间 — 输入 1 作为连续采样之间的时间(以秒为单位)。 该值代表实验中的实际采样时间。
导入数据对话框现在类似于下图。

3.单击导入以将数据添加到系统标识应用程序。 该应用程序添加了一个图标来表示数据。

4. 单击关闭以关闭导入数据对话框。
在本教程的这一部分中,您将评估数据并对其进行处理以进行系统识别。您将学习如何:
从每个信号中减去平均值的原因是,通常,您会构建线性模型来描述偏离物理平衡的响应。对于稳态数据,可以合理地假设信号的平均水平对应于这种平衡。因此,您可以在零附近寻找模型,而无需对物理单位中的绝对平衡水平进行建模。
您必须已将数据导入系统标识应用程序,如将数据对象导入系统标识应用程序中所述。1.
绘制和处理数据:
1.选择时间图复选框以打开时间图窗口。

底部坐标轴显示输入数据——随机二进制序列,顶部坐标轴显示输出数据。
接下来的两个步骤演示了如何修改图中的轴限制。
2. 要修改输入数据的垂直轴范围,请在时间图图形窗口中选择选项 > 设置轴范围。

“时间图限制”对话框中的其他两个字段“时间”和“y1”可让您分别设置时间轴和输出通道轴的轴限制。 您还可以通过选择相应的选项将每个轴指定为对数或线性。
下图显示了更新的时间图。

4.在 System Identification 应用中,选择 <--Preprocess > Quick start 执行以下四个操作:
学到更多。 有关支持的数据处理操作(例如重新采样和过滤数据)的信息,请参阅预处理数据。
在本教程的这一部分中,您将估计具有以下结构的模型:

您必须已经处理了估计数据,如绘制和处理数据中所述。
识别二阶传递函数:
1.在 System Identification 应用程序中,选择 Estimate > Process models 以打开 Process Models 对话框。

2.在“过程模型”对话框的“模型传递函数”区域中,指定以下选项:
此选择将模型传递函数更新为可以包含复极点的二阶模型结构。

3.Process Models 对话框的 Parameter 区域现在显示四个活动参数:K、Tw、Zeta 和 Td。 在 Initial Guess 区域中,保留默认的 Auto-selected 选项以在估计期间计算初始参数值。 参数表中的 Initial Guess 列显示 Auto。
4.保留默认的 Bounds 值,该值指定每个参数的最小值和最大值。
如果您知道参数的可能值范围,则可以将这些值输入到相应的 Bounds 字段中以帮助估计算法。 指定值后按 Enter 键。
5.保持估计算法的默认设置:
模拟设置针对识别您计划用于输出模拟的模型进行了优化。 如果您计划将模型用于输出预测或控制应用程序,或者使用噪声模型改进参数估计,请选择预测。
应用程序为模型分配一个名称,显示在名称字段(位于对话框底部)中。 默认情况下,名称是首字母缩写词 P2DU,表示两个极点 (P2)、一个延迟 (D) 和欠阻尼模式 (U)。

6.单击估计将模型 P2DU 添加到系统识别应用程序。
如果您确切知道参数值,则可以在“过程模型”对话框的“值”列中键入该值。 指定值后选中相应的已知复选框。
如果您知道参数的近似值,则可以通过在 Initial Guess 列中输入初始值来帮助估计算法。 在这种情况下,清除已知复选框以允许估计微调此初始猜测。
例如,要将时间延迟值 Td 固定为 2s,请将该值输入到 Process Models 对话框中 Parameter 表的 Value 字段中。 然后选择相应的已知复选框。

您可以分析以下图来评估模型的质量:
您必须已经估计了模型,如使用默认设置估计二阶传递函数中所述。
检查模型输出。 您可以使用模型输出图来检查模型输出与验证数据集中测量输出的匹配程度。 一个好的模型是最简单的模型,可以最好地描述动态并成功模拟或预测不同输入的输出。
要生成模型输出图,请选中系统识别应用程序中的模型输出复选框。 如果绘图为空,请单击 System Identification 应用程序窗口中的模型图标以在绘图上显示模型。

System Identification Toolbox™ 软件使用输入验证数据作为模型的输入,并将模拟输出绘制在输出验证数据之上。 上图显示模型输出与验证数据输出非常吻合。
模型输出图的最佳拟合区域显示模型输出和验证数据输出之间的一致性(百分比)。
回想一下,数据是使用以下具有欠阻尼模式(复极点)的二阶系统模拟的,如数据描述中所述,并且在 1 rad/s 处具有峰值响应:

因为在模拟过程中数据在输入端包含噪声,所以估计的模型不能准确地再现用于模拟数据的模型。
检查模型残差。 您可以通过检查其残差的行为来验证模型。
要生成残差分析图,请选中 System Identification 应用程序中的 Model resids 复选框。

上轴显示输出残差的自相关(白度测试)。水平刻度是滞后数,它是估计相关性的信号之间的时间差(以样本为单位)。置信区间内的任何波动都被认为是微不足道的。一个好的模型应该在置信区间内有残差自相关函数,表明残差不相关。但是,在此示例中,残差似乎是相关的,这是很自然的,因为使用噪声模型使残差变为白色。
底部轴显示残差与输入的互相关。一个好的模型应该有与过去输入不相关的残差(独立性检验)。相关性的证据表明该模型没有描述输出的一部分如何与相应的输入相关。例如,当滞后 k 的置信区间外有一个峰值时,这意味着模型没有正确描述源自输入 u(t-k) 对输出 y(t) 的贡献。在此示例中,残差和输入之间没有相关性。
因此,残差分析表明该模型很好,但可能需要噪声模型。
在本教程的这一部分中,您将估计一个二阶传递函数并包含一个噪声模型。 通过包含噪声模型,您可以优化预测应用程序的估计结果。
您必须已经估计了模型,如使用默认设置估计二阶传递函数中所述。
估计带有噪声的二阶传递函数:
1.如果“过程模型”对话框未打开,请在“系统识别”应用程序中选择“估计”>“过程模型”。 此操作将打开“流程模型”对话框。

2.在模型传递函数区域中,指定以下选项:


其中和 D 是一阶多项式,e 是白噪声。
此操作将焦点指定为预测,从而提高噪声水平较低的频率范围内的准确性。 例如,如果在高频处存在更多噪声,则算法对准确拟合数据的高频部分的重要性较低。
名称 - 将模型名称编辑为 P2DUe1,以在 System Identification 应用程序中生成具有唯一名称的模型。
3.单击估计。
4.在 Process Models 对话框中,将 Disturbance Model 设置为 Order 2 以估计二阶噪声模型。
5.将 Name 字段编辑为 P2DUe2 以在 System Identification 应用程序中生成具有唯一名称的模型。
6.单击估计。
在本教程的这一部分中,您将使用模型输出和残差分析图来评估模型性能。
您必须已经估计了模型,如使用默认设置估计二阶传递函数和估计具有复极点的二阶过程模型中所述。
比较模型输出图。 要生成模型输出图,请选中系统识别应用程序中的模型输出复选框。 如果绘图为空或绘图上未显示模型输出,请单击系统识别应用程序窗口中的模型图标以在绘图上显示这些模型。
默认情况下,以下模型输出图显示了模拟模型输出。 对于有噪声和无噪声的模型,模型的模拟响应大致相同。 因此,包括噪声模型不会影响模拟输出。

要查看预测的模型输出,请在“模型输出”绘图窗口中选择“选项”>“提前 5 步预测输出”。
下面的模型输出图显示 P2DUe2 的预测模型输出(具有二阶噪声模型)优于其他两个模型的预测输出(分别为无噪声模型和具有一阶噪声模型)。

比较残差分析图。 要生成残差分析图,请选中 System Identification 应用程序中的 Model resids 复选框。 如果绘图为空,请单击 System Identification 应用程序窗口中的模型图标以在绘图上显示这些模型。
P2DUe2 完全在残差分析图的置信范围内。

要仅查看 P2DUe2 的残差,请通过单击系统识别应用程序中的相应图标从残差分析图中删除模型 P2DU 和 P2DUe1。

残差分析图更新,如下图所示。

P2DUe2 的白度检验表明残差不相关,独立性检验表明残差和输入之间没有相关性。 这些测试表明 P2DUe2 是一个很好的模型。
您可以通过右键单击系统识别应用程序中的模型图标来查看有关模型 P2DUe2 的数值参数值和其他信息。 数据/模型信息对话框打开。

对话框的不可编辑区域列出了与以下模型结构相对应的模型系数:

系数与用于模拟数据的模型一致:

要查看系统传递函数的参数不确定性,请单击 Data/model Info 对话框中的 Present,然后在 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) s + 1.089 (+/- 0.07951) D(s) = s^2 + 0.2561 (+/- 0.09044) s + 0.5969 (+/- 0.3046)
模型参数的 1 标准偏差不确定性在每个参数值旁边的括号中。
您可以从 MATLAB 工作区对估计的模型执行进一步分析。 例如,如果模型是需要控制器的工厂,您可以将模型从 MATLAB 工作区导入到 Control System Toolbox™ 产品中。 此外,要在 Simulink 软件中仿真您的模型(可能作为更大动态系统的一部分),您可以将此模型作为 Simulink 模块导入。
您在 System Identification 应用程序中创建的模型不会自动在 MATLAB 工作区中可用。 要使模型可用于其他工具箱、Simulink 和 System Identification Toolbox 命令,您必须将模型从 System Identification 应用程序导出到 MATLAB 工作区。
要导出 P2DUe2 模型,请将模型图标拖到 System Identification 应用程序中的 To Workspace 矩形。 或者,单击“数据/模型信息”对话框中的“导出”。 该模型现在出现在 MATLAB Workspace 浏览器中。

该模型是一个 idproc 模型对象。
在本教程中,您将创建一个简单的 Simulink 模型,该模型使用 System Identification Toolbox 库中的模块将数据 z 和模型 P2DUe2 引入 Simulink。
要执行本教程中的步骤,您的计算机上必须安装 Simulink。
此外,您必须已经执行了以下步骤:
如果您尚未执行这些步骤,请单击此处完成它们。 然后,将 z 和 P2DUe2 图标拖到 System Identification 应用程序中的 To Workspace 矩形。 或者,单击“数据/模型信息”对话框中的“导出”。 数据和模型现在出现在 MATLAB Workspace 浏览器中。
通过在 MATLAB 命令行窗口中键入以下命令,将数据集 z 的输入通道用作模拟模型输出的输入:
- z_input = z; % Creates a new iddata object.
- z_input.y = []; % Sets the output channel
- % to empty.
或者,您可以指定任何输入信号。
学到更多。 有关表示用于系统识别的数据信号的更多信息,请参阅在 MATLAB Workspace 中表示数据。 Representing Data in MATLAB Workspace.
要将模块添加到 Simulink 模型:
1.在 MATLAB 主页选项卡上,单击Simulink。
![]()
2.在 Simulink 开始页面中,单击空白模型。 然后单击 Create Model 打开一个新的模型窗口。
3.在 Simulink 模型窗口中,单击以打开 Library Browser。 在 Library Browser 中,选择 System Identification Toolbox 库。 窗口右侧显示特定于 System Identification Toolbox 产品的块。

或者,要访问 System Identification 模块库,请在 MATLAB 命令行窗口中键入 slident。
4.将以下 System Identification Toolbox 模块拖到新模型窗口中:
5.在 Simulink Library Browser 中,选择 Simulink > Sinks library,然后将 Scope 模块拖动到新模型窗口。
6.在 Simulink 模型窗口中,将模块连接到如下图所示。

接下来,您配置这些模块以从 MATLAB 工作区获取数据并设置仿真时间间隔和持续时间。
此过程将指导您完成以下任务来配置模型模块:
1.在 Simulink Editor 中,选择建模 > 模型设置 > 模型设置 Ctrl+E。
2.在 Configuration Parameters 对话框的 Solver 子窗格中,在 Stop time 字段中,键入 200。单击 OK。
该值将模拟的持续时间设置为 200 秒。
3.双击 Iddata Source 模块以打开 Source Block Parameters: Iddata Source 对话框。 然后,在 IDDATA 对象字段中键入以下变量名称:
z_input
此变量是 MATLAB 工作区中包含输入数据的数据对象。

作为快捷方式,您可以将变量名称从 MATLAB Workspace 浏览器拖放到 IDDATA 对象字段。
单击确定。
4.双击 Idmodel 模块以打开 Function Block Parameters:Idmodel 对话框。
a.在模型变量字段中键入以下变量名称:P2DUe2
此变量表示 MATLAB 工作区中模型的名称。
b.清除添加噪声复选框以从模拟中排除噪声。 单击确定。
选择添加噪声后,Simulink 会从模型的 NoiseVariance 属性中导出噪声幅度,并相应地向模型添加噪声。 仿真根据使用系统动力学估计的噪声模型 H 传播此噪声:


单击确定。
5.双击 Iddata Sink 块以打开 Sink 块参数:Iddata Sink 对话框。 在 IDDATA 名称字段中键入以下变量名称:
z_sim_out
6.在 Sample Time (sec.) 字段中键入 1 以设置输出数据的采样时间以匹配输入数据的采样时间。

单击确定。
下图显示了对 Simulink 模型产生的更改。

1.在 Simulink Editor 中,选择 Simulation > Run。
2.双击 Scope 模块以显示模型输出的时间图。

3.在 MATLAB Workspace 浏览器中,注意变量 z_sim_out 将模型输出存储为 iddata 对象。 您在配置 Iddata Sink 块时指定了此变量名称。
此变量存储模型的模拟输出,现在可用于进一步处理和探索。