主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

估计过程模型

使用实时编辑器在时域或频域中估计单输入单输出 (SISO) 系统的连续时间过程模型

说明

通过 Estimate Process Model 任务,您可以通过交互方式估计和验证 SISO 系统的过程模型。您可以定义和改变模型结构,并指定可选参数,例如初始条件处理和搜索方法。该任务会自动为您的实时脚本生成 MATLAB® 代码。有关 Live Editor 任务总体情况的详细信息,请参阅将交互式任务添加到实时脚本中

过程模型是描述线性系统动态特性的简单连续时间传递函数。过程模型元素包括静态增益、时间常数、时间延迟、积分器和过程零点。

过程模型常用于描述众多行业的系统动态特性,并适用于各种生产环境。这些模型的优点是简单、支持传输延迟估计,模型系数易于解释为极点和零点。有关过程模型估计的详细信息,请参阅What Is a Process Model?

Estimate Process Model 任务独立于更通用的系统辨识。当您想要计算和比较多个模型结构的估计值时,请使用系统辨识

首先,将包含输入和输出数目据的试验数据加载到您的 MATLAB 工作区中,再将该数据导入到任务中。然后,选择一个要估计的模型结构。该任务为您提供控制和绘图,帮助您试验不同的模型结构并比较每个模型的输出与测量值的拟合度。

相关函数

Estimate Process Model 生成的代码使用以下函数。

该任务估计一个 idproc 过程模型。

Estimate Process Model task in Live Editor

打开任务

要将 Estimate Process Model 任务添加到 MATLAB 编辑器中的实时脚本,请执行以下操作:

  • Live Editor 选项卡上,选择 Task > Estimate Process Model

  • 在脚本的代码块中,键入相关关键字,例如 processestimate。从建议的命令自动填充项中选择 Estimate Process Model

示例

全部展开

使用 Estimate Process Model Live Editor 任务来估计过程模型,并将模型输出与测量数据进行比较。

设置数据

将测量数据 tt1 加载到您的 MATLAB 工作区中。tt1 是一个时间表,其中包含一个输入变量 u 和一个输出变量 y

load sdata1 tt1

将数据导入任务

Select data 部分中,将 Data type 设置为 Timetable,并将 Estimation data 设置为 tt1

该任务显示一个包含 tt1 输入和输出变量名称的表。

使用默认设置估计模型

检查模型结构和可选参数。

Specify model structure 部分,默认选项是 One Pole,且不选中 Delay、Zero 或 Integrator。本节中参数下面的方程显示了指定的结构。

Specify estimation initialization 部分,与模型结构中的参数匹配的初始化参数允许您设置估计的起点。如果您选择 Fix,则参数将保持固定为您指定的值。对于此示例,不要指定初始化。该任务然后任务使用默认值作为起点。

Specify optional parameters 部分,设置过程估计的默认选项。

通过点击绿色箭头,从 Live Editor 选项卡执行任务。您还可以选择 Autorun,以便在每次更新参数时自动运行任务。

下图显示估计数据、估计模型输出和拟合百分比。

使用参数设置进行试验

使用参数设置进行试验并观察它们如何影响拟合度。

例如,向 One Pole 结构中添加延迟并运行任务。

尽管拟合度百分比仍低于 50%,但估计拟合度有所改善。

尝试不同的模型结构。在 Specify model structure 中,选择 Underdamped Pair 但不选中 Delay,并运行任务。

拟合结果明显改善。

生成代码

要显示任务生成的代码,请点击参数部分底部的 。您看到的代码反映了任务的当前参数配置。

使用单独的估计和验证数据,以便您可以验证估计的过程模型。

设置数据

将测量数据 sdata1 加载到您的 MATLAB 工作区并检查其内容。

load sdata1 umat1 ymat1 Ts

将数据分成两组,一半用于估计,一半用于验证。原始数据集有 300 个采样,因此,每个新数据集有 150 个采样。

u_est = umat1(1:150);
u_val = umat1(151:300);
y_est = ymat1(1:150);
y_val = ymat1(151:300);
Ts
Ts = 
0.1000

将数据导入任务

Select data 部分中,将 Data type 设置为 Numeric。将采样时间设置为 0.1 秒。选择适当的数据集进行估计和验证。

估计和验证模型

示例使用实时编辑器任务评估过程模型使用模型结构 Underdamped Pair 实现了最佳结果。对于此示例,选择相同的选项。

执行任务。执行任务会创建两个图。第一个图显示估计结果,第二个图显示验证结果。

对估计数据的拟合度比使用实时编辑器任务评估过程模型略差。当前示例中的估计只使用了一半的数据来估计模型。对验证数据的拟合度更能体现模型的优良率,因此优于对估计数据的拟合度。

参数

全部展开

Select Data

该任务接受在时间上均匀采样的数值测量值。输入和输出信号可以包含多个通道。数据可以打包为数值数组(对于 NumericFrequency)、时间表或数据对象,例如 iddataidfrd 对象。对于多试验数据,数值数据和时间表数据可以打包为元胞数组。对于时间表的元胞数组,所有时间表都必须包含相同的变量名称。数据对象在内部处理多试验数据。

您选择的数据类型决定您是否必须指定附加参数。

  • Numeric - 以您选择的时间单位指定 Sample TimeStart Time

  • Timetable - 无需指定任何附加参数,因为时间表已经包含有关采样时间和开始时间的信息。

  • Frequency - 通过在 MATLAB 工作区中选择频率向量的变量名称来指定 Frequency。指定此频率向量的单位。以秒为单位指定 Sample Time

  • Data Object - 无需指定任何附加参数,因为数据对象已经包含有关时间或频率采样的信息。

从 MATLAB 工作区选项中选择输入和输出变量名称。当 Data TypeNumericFrequency 时使用这些参数。

指定验证数据是可选的,但建议这样做。

从 MATLAB 工作区选项中选择时间表变量名称。当 Data TypeTimetable 时使用此参数。该任务显示输入和输出的时间表变量名称。估计和验证时间表必须包含相同的变量名称。

从 MATLAB 工作区选项中选择数据对象变量名称。当 Data TypeData Object 时使用此参数。

指定模型结构

该任务允许您指定四种基本结构之一。这些结构既有简单的一阶过程,又不乏具有复共轭(欠阻尼)极点的更动态二阶或三阶过程。

  • One Pole

  • Two Real Poles

  • Underdamped Pair

  • Underdamped Pair + Real Pole

包括一个采样的传输延迟或输入到输出延迟。传输延迟也称为死区时间。

在分子中包括一个过程零点。

包括一个积分器,由附加的 1/ s 项表示。包括积分器可以创建一个自调节过程。

指定估计初始化

指定估计的初始值以及这些值是固定的还是估计的。要指定的值取决于模型结构以及您对 DelayZero 的指定。在 Specify model structure 下方,任务显示表示指定系统的方程。该方程包含所有可以估计的参数,以及所有可以初始化或固定的参数。可能的参数有:

  • Kp - 静态增益

  • Tp1 - 第一个实极点的时间常数

  • Tp2 - 第二个实极点的时间常数

  • - 复极点的时间常数,等于固有频率的倒数

  • ζ - 复极点的阻尼系数

  • Td - 传输延迟

  • Tz - 过程零点的时间常数

所有基于时间的参数均采用您为 Sample Time 选择的时间单位。

指定可选参数

拟合焦点指定在估计期间在损失函数中最小化的误差。

  • Prediction - 最小化测量输出和预测输出之间的一步预测误差。这种估计方法侧重于为估计输入和输出生成良好的预测模型。预测焦点通常会产生最佳估计结果,因为它同时使用输入和输出测量,因而将干扰考虑在内。

  • Simulation - 最小化测量输出和仿真输出之间的误差。这种估计方法侧重于生成与估计输入和输出良好拟合的仿真模型响应。仿真焦点通常最适用于验证,尤其是针对未用于原始估计的数据集。

当您想要选择一种特定的方法来初始化模型时,请设置此选项。使用默认设置 Auto 时,软件会根据估计数据选择方法。选项如下:

  • Zero - 初始状态设置为零。

  • Estimate - 初始状态被视为独立的估计参数。

  • Backcast - 初始状态使用最佳最小二乘拟合估计。

输入采样间是输入数目据的属性。该任务在估计过程模型时使用此属性。当数据类型为 TimeFrequency 时,指定 Input Intersampling。如果您使用的是 iddata 对象,则该对象已经包含采样间信息。此属性的选项如下:

  • Zero-order hold - 采样之间的分段常数输入信号

  • Triangle approximation - 采样之间的分段线性输入信号,也称为一阶保持

  • Band-limited - 输入信号在奈奎斯特频率以上的功率为零

可用于迭代参数估计的数值搜索方法如下:

搜索方法描述
Auto对于每次迭代,软件都会循环执行这些方法,直到找到第一个导致估计成本降低的下降方向。
Gauss-Newton在计算搜索方向时,小于 GnPinvConstant*eps*max(size(J))*norm(J) 的雅可比矩阵奇异值将被丢弃。J 是雅可比矩阵。黑塞矩阵逼近为 JTJ。如果这个方向显示没有改善,该函数将尝试梯度方向。
Adaptive Gauss-Newton小于黑塞矩阵的 gamma*max(sv) 的特征值将被忽略,其中 sv 包含黑塞矩阵的奇异值。高斯-牛顿方向在剩余的子空间中计算。gamma 具有初始值 InitialGnaTolerance(有关详细信息,请参阅 'SearchOptions' 中的 Advanced)。每当搜索在少于五次二分尝试中未能找到更低的标准值时,该值就会按因子 LMStep 增加。每当搜索在不执行任何二分尝试的情况下取得成功时,该值就会按因子 2*LMStep 减少。
Levenberg-Marquardt每个参数值与前一个值相差 -pinv(H+d*I)*gradH 是黑塞矩阵,I 是单位矩阵,grad 是梯度。d 是一个不断增加到找到更低标准值的数字。此方法需要 Optimization Toolbox™ 软件。有关详细信息,请参阅莱文贝格-马夸特方法 (Optimization Toolbox)
Gradient search最陡下降最小二乘搜索。
Trust-Region Reflective Newton有约束非线性求解器。该求解器需要 Optimization Toolbox 软件。有关详细信息,请参阅fmincon 信赖域反射算法 (Optimization Toolbox)
Pattern Search没有明确定义梯度的非线性求解器。该求解器需要 Global Optimization Toolbox 软件。有关详细信息,请参阅patternsearch (Global Optimization Toolbox)
Sequential Quadratic Programming (SQP)有约束非线性求解器。该求解器需要 Optimization Toolbox 软件。有关详细信息,请参阅fmincon SQP 算法 (Optimization Toolbox)
Interior-Point有约束非线性求解器。该求解器需要 Optimization Toolbox 软件。有关详细信息,请参阅fmincon 内点算法 (Optimization Toolbox)

设置误差最小化期间的最大迭代次数。当达到 Max.Iterations 或满足另外一个停止条件(如 Tolerance)时,迭代停止。

当预期改进的百分比小于 Tolerance 时,迭代停止。

当您想要将加权预滤波器应用于估计模型时任务最小化的损失函数时,请设置此选项。当您选择一个选项时,您还必须在工作区中选择包含滤波器信息的相关变量。可用选项取决于数据域。

加权预滤波器数据域滤波器信息
No Filter时间和频率 
Passbands时间和频率通带范围,指定为 1×2 行向量或 n×2 矩阵,其中 n 是通带的数量
LTI Filter时间和频率SISO LTI 模型
Frequency Weights Vector频率频率权重,指定为与频率向量长度相同的列向量

例如,假设您将使用 SISO 频域数据执行估计,并且在您的 MATLAB 工作区中,您有一个列向量 W,其中包含预滤波器的频率权重。在任务中,选择 Weighting prefilter > Frequency weights vector 和变量 W

可视化结果

绘制模型输出和原始测量数据的比较以及拟合百分比。如果您有单独的验证数据,则第二个图会将模型对验证输入数目据的响应与验证数据集的测量输出进行比较。

版本历史记录

在 R2019b 中推出

全部展开

另请参阅

| | | | | | | (Control System Toolbox)