主要内容

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

arx

估计 ARX、ARIX、AR 或 ARI 模型的参数

说明

估计 AR 或 ARX 模型

sys = arx(tt,[na nb nk]) 使用时间表 tt 的变量中包含的数据来估计 ARXAR idpoly 模型 sys 的参数。软件以第一个 Nu 个变量作为输入,以接下来的 Ny 个变量作为输出,其中 NuNy 分别由 nbna 的维度确定。

对于没有输入信号的 AR 模型,使用 sys = arx(tt,na)。在这种情况下,软件使用第一个 Ny 变量来拟合模型。

arx 使用最小二乘法和 [na nb nk] 中指定的多项式阶数进行估计。模型属性包括协方差(参数不确定性)以及估计数据和测量数据之间的拟合优度。

要从 tt 中选择特定的输入和输出通道,请使用名称-值语法将 'InputName''OutputName' 设置为相应的时间表变量名称。

示例

sys = arx(u,y,[na nb nk]) 使用逗号分隔的矩阵 u,y 中的时域输入和输出信号。软件假设数据采样时间为 1 秒。要更改采样时间,请使用名称-值语法设置 Ts

sys = arx(data,[na nb nk]) 使用数据对象 data 中的时域或频域数据。尤其当您想使用频域或频率响应数据来估计模型时,或者当您想要利用数据对象提供的附加信息(例如数据采样时间或试验标注)时,请使用此语法。

示例

指定附加选项

sys = arx(___,Name,Value) 使用一个或多个名称-值对组参量指定附加选项。例如,使用名称-值对组参量 'IntegrateNoise',1 估计 ARIXARI 结构模型,这对于具有非平稳扰动的系统很有用。您可以将此语法与任何先前的输入参数组合一起使用。

示例

sys = arx(___,opt) 使用选项集 opt 指定估计选项。

示例

返回估计的初始条件

[sys,ic] = arx(___) 将估计的初始条件作为 initialCondition 对象返回。如果您计划使用相同的估计输入数目据来仿真或预测模型响应,然后将响应与相同的估计输出数目据进行比较,请使用此语法。结合初始条件,在仿真的第一部分可以得到更好的匹配。

示例

示例

全部折叠

根据指定的 ARX 模型生成输出数目据,并使用输出数目据来估计模型。

使用 ARX 结构指定多项式模型 sys0。该模型包括一个采样的输入延迟,表示为 B 多项式中的前导零。

A = [1  -1.5  0.7];
B = [0 1 0.5];
sys0 = idpoly(A,B);

生成包含随机二进制噪声的测量输入信号 u 和包含正态分布噪声的误差信号 e。利用这些信号,仿真 sys0 的测量输出信号 y

u = iddata([],idinput(300,'rbs'));
e = iddata([],randn(300,1));
y = sim(sys0,[u e]);

yu 合并为单个 iddata 对象 z。使用 z 和与原始模型相同的多项式阶数和输入延迟来估计新的 ARX 模型。

z = [y,u];
sys = arx(z,[2 2 1])
sys =
Discrete-time ARX model: A(z)y(t) = B(z)u(t) + e(t)
  A(z) = 1 - 1.524 z^-1 + 0.7134 z^-2              
                                                   
  B(z) = z^-1 + 0.4748 z^-2                        
                                                   
Sample time: 1 seconds
  
Parameterization:
   Polynomial orders:   na=2   nb=2   nk=1
   Number of free coefficients: 4
   Use "polydata", "getpvec", "getcov" for parameters and their uncertainties.

Status:                                          
Estimated using ARX on time domain data "sys0".  
Fit to estimation data: 81.36% (prediction focus)
FPE: 1.025, MSE: 0.9846                          
 
Model Properties

输出显示包含估计参数以及其他估计细节的多项式。在 StatusFit to estimation data 下显示估计模型的 1 步预测准确率在 80% 以上。

使用 arx 函数估计时间序列 AR 模型。AR 模型没有测量输入。

加载数据,该数据位于包含带有噪声的时间序列 tt9 的时间表中。

load sdata9 tt9

通过仅指定 [na nb nk] 中的 na 阶来估计四阶 AR 模型。

sys = arx(tt9,4);

检查估计的 A 多项式参数以及估计值与数据的拟合度。

param = sys.Report.Parameters.ParVector
param = 4×1

   -0.7923
   -0.4780
   -0.0921
    0.4698

fit = sys.Report.Fit.FitPercent
fit = 
79.4835

估计 ARIX 模型的参数。ARIX 模型是具有集成噪声的 ARX 模型。

指定具有 ARX 结构的多项式模型 sys0。该模型包括一个采样的输入延迟,表示为 B 中的前导零。

A = [1  -1.5  0.7];
B = [0 1 0.5];
sys0 = idpoly(A,B);

使用随机二进制输入信号 u 和正态分布的误差信号 e 仿真 sys0 的输出信号。

u = iddata([],idinput(300,'rbs'));
e = iddata([],randn(300,1));
y = sim(sys0,[u e]);

对输出信号进行积分,并将结果 yi 存储在 iddata 对象 zi 中。

yi = iddata(cumsum(y.y),[]);
zi = [yi,u];

根据 zi 估计 ARIX 模型。将名称-值对组参量 'IntegrateNoise' 设置为 true

sys = arx(zi,[2 2 1],'IntegrateNoise',true);

使用 5 步预测来预测模型输出,并将结果与 yi 进行比较。

compare(zi,sys,5)

Figure contains an axes object. The axes object with ylabel y1 contains 2 objects of type line. These objects represent Validation data (y1), sys: 76.25%.

使用 arxRegul 自动确定正则化常数,并使用这些值来估计阶数为 50 的 FIR 模型。

获取 lambdaR 值。

load regularizationExampleData eData;
orders = [0 50 0];
[lambda,R] = arxRegul(eData,orders);

使用返回的 lambdaR 值进行正则化 ARX 模型估计。

opt = arxOptions;
opt.Regularization.Lambda = lambda;
opt.Regularization.R = R;
sys = arx(eData,orders,opt);

加载数据。

load iddata1ic z1i

估计二阶 ARX 模型 sys 并返回 ic 中的初始条件。

na = 2;
nb = 2;
nk = 1;
[sys,ic] = arx(z1i,[na nb nk]);
ic
ic = 
  initialCondition with properties:

     A: [2×2 double]
    X0: [2×1 double]
     C: [0 2]
    Ts: 0.1000

ic 是一个 initialCondition 对象,它以状态空间形式封装了 sysX0 中的初始状态向量的自由响应。当您使用 z1i 输入信号仿真 sys 并将响应与 z1i 输出信号进行比较时,您可以合并 ic

输入参数

全部折叠

估计数据,指定为使用固定间隔时间向量的 timetablett 包含表示输入和输出通道的变量。对于多试验数据,tt 是长度为 Ne 的时间表元胞数组,其中 Ne 是试验的数量。

软件根据指定多项式阶数的维度确定用于估计的输入和输出通道的数量。输入/输出通道选择取决于是否指定了 'InputName''OutputName' 名称-值参量。

  • 如果未指定 'InputName''OutputName',则软件将使用 tt 的第一个 Nu 变量作为输入,使用 tt 的下一个 Ny 变量作为输出。

  • 如果指定了 'InputName''OutputName',则软件使用指定的变量。指定的输入和输出名称的数量必须与 NuNy 一致。

  • 对于可以估计时间序列模型的函数,如果没有输入,则不需要指定 'InputName'

有关使用估计数据类型的详细信息,请参阅Data Domains and Data Types in System Identification Toolbox

估计数据,对于 SISO 系统指定为以逗号分隔的 Ns×1 实值矩阵对,其中包含均匀采样的输入和输出时域信号值。这里,Ns 是采样数。

对于 MIMO 系统,指定 u,y 作为具有以下维度的输入/输出矩阵对:

  • u - NsxNu,其中 Nu 是输入数目。

  • y - NsxNy,其中 Ny 是输出数目。

对于多试验数据,将 uy 指定为一对 1×Ne 元胞数组数组,其中 Ne 是试验的数量。所有试验的采样时间必须匹配。

对于仅包含输出而不包含输入的时间序列数据,请指定 [],y

限制

  • 基于矩阵的数据不支持从频域数据进行估计。您必须使用数据对象,例如 iddata 对象或 idfrd 对象(请参阅 data)。

有关使用估计数据类型的详细信息,请参阅Data Domains and Data Types in System Identification Toolbox

估计数据,指定为 iddata 对象、frd (Control System Toolbox) 对象或 idfrd 频率响应对象。对于 AR 和 ARI 时间序列模型,data 中的输入通道必须为空。

模型的多项式阶数和延迟,指定为 1×3 向量或矩阵向量 [na nb nk]。多项式的阶等于该多项式中要估计的系数的数量。

对于没有输入的 AR 或 ARI 时间序列模型,将 [na nb nk] 设置为标量 na。有关示例,请参阅AR 模型

对于具有 Ny 输出和 Nu 输入的模型:

  • na 是多项式 A(q) 的阶,指定为非负整数的 Ny×Ny 矩阵。

  • nb 是多项式 B(q) + 1 的阶,指定为非负整数的 Ny×Nu 矩阵。

  • nk 是输入-输出延迟,也称为传输延迟,指定为非负整数的 Ny×Nu 矩阵。nk 在 ARX 模型中由 B 多项式中的固定前导零表示。

    例如,假设没有传输延迟,sys.b[5 6]

    • 因为 sys.b + 1 是二阶多项式,所以 nb = 2。

    • 指定传输延迟 nk = 3。指定此延迟会在 sys.b 前添加三个前导零,这样 sys.b 现在变为 [0 0 0 5 6],而 nb 仍然等于 2。

    • 这些系数代表多项式 B(q) = 5 q-3 + 6 q-4

    您还可以使用名称-值对组参量 'IODelay' 实现传输延迟。

.

示例: arx(data,[2 1 1])iddata 对象计算出一个二阶 ARX 模型,该模型具有一个输入通道,其输入延迟为一个采样。

ARX 模型辨识的估计选项,指定为 arOptions 选项集。opt 指定的选项包括以下内容:

  • 初始条件处理 - 此选项仅适用于频域数据。对于时域数据,信号被移动,使得预测器中永远不需要未测量的信号。

  • 输入和输出数目据偏移 - 使用这些选项在估计期间消除时域数据的偏移。

  • 正则化 - 使用此选项可控制估计过程中偏置和方差误差之间的权衡。

有关详细信息,请参阅 arxOptions。有关示例,请参阅具有正则化的 ARX 模型

名称-值参数

全部折叠

Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

如果使用的是 R2021a 之前的版本,请使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: 'IntegrateNoise',true 在噪声通道中添加了一个积分器。

输入通道名称,指定为字符串、字符向量、字符串数组或字符向量元胞数组。

如果您使用时间表作为数据源,则 InputName 中的名称必须是时间表变量的子集。

示例: sys = arx(tt,__,'InputName',["u1" "u2"]) 从时间表 tt 中选择变量 u1u2 作为输入通道用于估计。

输出通道名称,指定为字符串、字符向量、字符串数组或字符向量单元元胞数组。

如果您使用时间表作为数据源,则 OutputName 中的名称必须是时间表变量的子集。

示例: sys = arx(tt,__,'OutputName',["y1" "y3"]) 从时间表 tt 中选择变量 y1y3 作为输出通道用于估计。

采样时间,指定为以逗号分隔的对,由 'Ts' 和以 TimeUnit 指定的单位表示的采样时间组成。当您使用基于矩阵的数据(uy)时,如果您需要除假定的 1 秒采样时间之外的采样时间,则必须指定 Ts

要获取时间表 tt 的数据采样时间,请使用时间表属性 tt.Properties.Timestep

示例: arx(umat1,ymat1,___,'Ts',0.08) 计算采样时间为 0.08 秒的模型。

输入延迟表示为采样时间的整数倍数,指定为由 'InputDelay' 和以下之一组成的逗号分隔的对:

  • Nu×1 向量,其中 Nu 是输入数目 - 每个条目都是一个值,表示相应输入通道的输入延迟。

  • 标值 - 对所有输入通道应用相同的延迟。

示例: arx(data,[2 1 3],'InputDelay',1) 估计具有一个输入通道的二阶 ARX 模型,该输入通道具有三个采样的输入延迟。

每个输入-输出对的传输延迟,表示为采样时间的整数倍数,并指定为由 'IODelay' 和以下之一组成的逗号分隔的对:

  • NyxNu 矩阵,其中 Ny 是输出数目,Nu 是输入数目 - 每个条目都是一个整值,表示相应输入-输出对的传输延迟。

  • 标值 - 对所有输入-输出对应用相同的延迟。当输入-输出延迟参数 nk 导致 B 多项式中出现大量固定前导零时,此方法很有用。您可以通过将 nk 中的滞后移到 'IODelay' 值中来排除 max(nk-1,0) 滞后。

    例如,假设您有一个具有两个输入的系统,其中第一个输入具有三个采样的延迟,第二个输入具有六个采样的延迟。还假设这些输入的 B 多项式是 n 阶。您可以使用以下内容表达这些延迟:

    • nk = [3 6] - 这导致了 [0 0 0 b11 ... b1n][0 0 0 0 0 0 b21 ... b2n] 的 B 多项式。

    • nk = [3 6]'IODelay',3 - 这导致了 [b11 ... b1n][0 0 0 b21 ... b2n] 的 B 多项式。

在噪声通道中添加积分器,指定为以逗号分隔的对,由 'IntegrateNoise' 和长度为 Ny 的逻辑向量组成,其中 Ny 是输出数目。

将特定输出的 'IntegrateNoise' 设置为 true 会为该通道创建 ARIX 或 ARI 模型。当干扰非平稳时,噪声积分很有用。

当使用 'IntegrateNoise' 时,您还必须集成输出通道数据。有关示例,请参阅ARIX 模型

输出参量

全部折叠

适合估计数据的 ARX 模型,以离散时间 idpoly 对象的形式返回。该模型是使用指定的模型阶数、延迟和估计选项创建的。

有关估计结果和所用选项的信息存储在模型的 Report 属性中。Report 具有以下字段。

报告字段描述
Status

模型状态摘要,指示模型是通过构造创建的还是通过估计获得的

Method

使用的估计命令

InitialCondition

模型估计期间初始条件的处理,返回以下值之一:

  • 'zero' - 初始条件已设置为零。

  • 'estimate' - 初始条件被视为独立的估计参数。

此字段对于查看当估计选项集中的 InitialCondition 选项为 'auto' 时如何处理初始条件特别有用。

Fit

估计的定量评估,以结构体形式返回。有关这些质量度量的详细信息,请参阅Loss Function and Model Quality Metrics。该结构体具有以下字段。

  • FitPercent - 归一化均方根误差 (NRMSE),用于衡量模型响应对估计数据的拟合度,以百分比 fitpercent = 100(1-NRMSE) 表示

  • LossFcn - 估计完成时的损失函数值

  • MSE - 均方误差 (MSE),衡量模型响应对估计数据的拟合度

  • FPE - 模型的最终预测误差

  • AIC - 模型质量的原始赤池信息准则 (AIC) 测量

  • AICc - 小采样大小的校正 AIC

  • nAIC - 归一化 AIC

  • BIC - 贝叶斯信息标准 (BIC)

Parameters

模型参数的估计值

OptionsUsed

用于估计的选项集。如果没有配置自定义选项,则这是一组默认选项。请参阅 arxOptions 以了解详细信息。

RandState

估计开始时随机数流的状态。如果在估计期间未使用随机化,则为空 []。有关详细信息,请参阅 rng

DataUsed

用于估计的数据的属性,以具有以下字段的结构返回。

  • Name - 数据集的名称

  • Type - 数据类型

  • Length - 数据采样数

  • Ts - 采样时间

  • InterSample - 输入采样间行为,以下列值之一返回:

    • 'zoh' - 零阶保持器在采样之间维持分段常数输入信号。

    • 'foh' - 一阶保持器在采样之间维持分段线性输入信号。

    • 'bl' - 带限行为指定连续时间输入信号在奈奎斯特频率以上的功率为零。

  • InputOffset - 估计期间从时域输入数目据中移除的偏移量。对于非线性模型,它是 []

  • OutputOffset - 估计期间从时域输出数目据中移除的偏移量。对于非线性模型,它是 []

有关使用 Report 的详细信息,请参阅Estimation Report

估计的初始条件,以 initialCondition 对象或 initialCondition 值的对象数组形式返回。

  • 对于单试验数据集,ic 以状态空间形式表示传递函数模型(AC 矩阵)对估计的初始状态 (x0) 的自由响应。

  • 对于包含 Ne 个试验的多试验数据集,ic 是一个长度为 Ne 的对象数组,其中包含每个试验的一组 initialCondition 值。

有关详细信息,请参阅 initialCondition。有关使用此参量的示例,请参阅获取初始条件

详细信息

全部折叠

算法

QR 分解解决了构成最小二乘估计问题的过度确定的线性方程组。

不进行正则化,ARX 模型参数向量 θ 通过求解正则方程来估计

(JTJ)θ=JTy

其中 J 是回归矩阵,y 是测量输出。因此,

θ=(JTJ)1JTy

使用正则化添加正则化项

θ=(JTJ+λR)1JTy

其中 λ 和 R 是正则化常数。有关正则化常数的详细信息,请参阅 arxOptions

当回归矩阵大于 arxOptions 中指定的 MaxSize 时,对数据进行分段,并对数据段迭代执行 QR 分解。

版本历史记录

在 R2006a 之前推出

全部展开