主要内容

recursiveOE

创建系统对象用于输出误差多项式模型的在线参数估计

语法

obj = recursiveOE
obj = recursiveOE(Orders)
obj = recursiveOE(Orders,B0,F0)
obj =递归oe (___、名称、值)

描述

使用recursiveOE命令用于实时数据的参数估计。如果估计所需的所有数据都一次性可用,并且您正在估计一个时不变模型,则使用离线估计命令,oe

obj= recursiveOE创建一个系统对象™,用于默认单输入单输出(SISO)的在线参数估计输出-误差模型结构.默认模型结构具有1阶多项式和初始多项式系数值每股收益

创建对象后,使用一步命令使用递归估计算法和实时数据更新模型参数估计。

obj= recursiveOE (订单)指定要估计的输出误差模型的多项式阶数。

obj= recursiveOE (订单B0, F0)指定多项式系数的多项式阶数和初始值。指定初始值以避免估计过程中的局部极小值。如果初始值比默认值小InitialParameterCovariance属性值,你有信心你的初始值,也指定较小InitialParameterCovariance

obj= recursiveOE (___名称,值)使用一个或多个输出错误模型结构和递归估计算法指定附加属性名称,值对参数。

对象描述

recursiveOE创建一个System对象,用于使用递归估计算法对SISO输出误差多项式模型进行在线参数估计。

System对象是一个专门的MATLAB®对象,专门为实现和模拟输入随时间变化的动态系统而设计。系统对象使用内部状态来存储过去的行为,这将在下一个计算步骤中使用。

创建System对象后,可以使用命令处理数据或从该对象获取信息或关于该对象的信息。系统对象至少使用两个命令来处理数据—构造函数用于创建对象和一步命令使用实时数据更新对象参数。声明与执行的分离允许您创建多个持久的可重用对象,每个对象具有不同的设置。

您可以对系统识别工具箱™中的在线估计系统对象使用以下命令:

命令 描述
一步

使用递归估计算法和实时数据更新模型参数估计。

一步使对象进入锁定状态。在锁定状态下,您不能更改任何不可调的属性或输入规范,例如模型顺序、数据类型或估计算法。在执行期间,您只能更改可调属性。

释放

解锁System对象。使用此命令开启不可调参数的设置。

重置

将锁定的System对象的内部状态重置为初始值,并保持锁定状态。

克隆

创建另一个具有相同对象属性值的System对象。

不使用语法创建额外的对象Obj2 = obj.对以这种方式创建的新对象的属性所做的任何更改(methoda)也会改变原始对象的属性(obj).

isLocked

查询System对象的输入属性和不可调属性的锁定状态。

使用recursiveOE命令,创建在线评估系统对象。然后估计输出误差多项式模型参数(B而且F),并使用一步命令的输入和输出数据,u而且y

[B,F,EstimatedOutput] = step(obj,y,u)

recursiveOE对象属性,请参见属性

例子

全部折叠

创建一个System对象,用于使用递归估计算法对输出误差多项式模型进行在线参数估计。

obj = recursiveOE;

输出误差模型有一个默认结构,多项式为1阶,初始多项式系数值,每股收益

加载估计数据。在本例中,使用静态数据集进行说明。

负载iddata1z1;输出= z1.y;Input = z1.u;

在线估计输出误差模型参数一步

i = 1: nummel (input) [B,F,EstimatedOutput] = step(obj,output(i),input(i));结束

查看多项式的当前估计值F系数。

obj。F
ans =1×21.0000 - -0.7618

查看参数的当前协方差估计。

obj。ParameterCovariance
ans =2×20.0024 0.0002 0.0002 0.0001

查看当前估计输出。

EstimatedOutput
EstimatedOutput = -4.1866

指定输出误差多项式模型的顺序和延迟。

Nb = 1;Nf = 2;Nk = 1;

创建一个System对象,用于输出误差多项式模型的在线估计,具有指定的顺序和延迟。

obj = recursiveOE([nb nf nk]);

指定输出误差多项式模型的顺序和延迟。

Nb = 1;Nf = 2;Nk = 1;

创建一个System对象,用于已知初始多项式系数的输出-误差模型的在线估计。

B0 = [0 1];F0 = [1 0.7 0.8];obj = recursiveOE([nb nf nk],B0,F0);

指定初始参数协方差。

obj。InitialParameterCovariance = 0.1;

InitialParameterCovariance表示您对初始参数的猜测中的不确定性。通常情况下,默认InitialParameterCovariance(10000)相对于参数值太大。这导致最初的猜测在估计过程中不那么重要。如果您对初始参数的猜测有信心,请指定一个较小的初始参数协方差。

创建一个System对象,该对象使用非标准化梯度算法对输出误差模型进行在线参数估计。

obj = recursiveOE([1 2 1],“EstimationMethod”“梯度”);

输入参数

全部折叠

模型的订单和延迟输出-误差多项式模型,指定为1 × 3的整数向量,[nb nf nk]

  • -多项式的阶B) + 1,指定为正整数。

  • nf-多项式的阶F),指定为非负整数。

  • nk—输入输出延迟,指定为正整数。nk是在输入影响输出之前出现的输入样本数。nk表示为固定的前导零B多项式。

多项式系数的初值,指定为实值的行向量,其元素按幂的升序排列-1

  • B0-多项式系数的初始猜测B),指定为1-by (nb + nk)矢量与nk前导零。

  • F0-多项式系数的初始猜测F),指定为1-by (nf + 1)以1为第一个元素的向量。

    里面的系数F0必须定义一个稳定的离散时间多项式,其根在一个单位圆盘内。例如,

    F0 = [1 0.5 0.5];所有(abs(根(F0)) < 1)
    Ans = 1

指定为[],使用默认值每股收益对于多项式系数。

请注意

如果初始参数值远小于InitialParameterCovariance时,这些初始值在估计时不太重要。如果对初始参数值有较高的置信度,则指定较小的初始参数协方差。这种说法只适用于无限历史估计。有限历史估计不使用InitialParameterCovariance

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

使用名称,值参数来指定可写的属性recursiveOE创建对象时的系统对象。例如,obj = recursiveOE([1 2 1],'EstimationMethod','Gradient')方法创建System对象以估计输出误差多项式模型“梯度”递归估计算法。

属性

recursiveOE系统对象属性由只读和可写属性组成。可写属性分为可调属性和不可调属性。方法锁定对象后,不可调属性不能更改一步命令。

使用名称,值的可写属性recursiveOE对象创建过程中的对象。创建对象后,使用点表示法修改可调属性。

obj = recursiveOE;obj。为gettingFactor = 0.99;

B

多项式估计系数B),以实值的向量形式返回,这些实值按的升序排列-1

B是只读属性,在创建对象后初始为空。属性后填充一步命令进行在线参数估计。

F

多项式估计系数F),以实值的向量形式返回,这些实值按的升序排列-1

F是只读属性,在创建对象后初始为空。属性后填充一步命令进行在线参数估计。

InitialB

多项式系数的初值B)秩序nb-1,指定为长度的行向量nb + nk,nk前导零。nk是输入输出延迟。的升幂顺序指定系数-1

如果初始猜测值远小于默认值InitialParameterCovariance, 10000时,初始猜测在估计时不那么重要。在这种情况下,指定一个较小的初始参数协方差。

InitialB是一个可调属性。您可以在对象处于锁定状态时更改它。

默认值:[0 eps]

InitialF

多项式系数的初值F)秩序nf,指定为长度的行向量nf + 1,将1作为第一个元素。的升幂顺序指定系数-1

里面的系数InitialF必须定义一个稳定的离散时间多项式,其根在单位圆内。例如,

InitialF = [1 0.9 0.8];所有(abs(根(InitialF)) < 1)
Ans = 1

如果初始猜测值远小于默认值InitialParameterCovariance, 10000时,初始猜测在估计时不那么重要。在这种情况下,指定一个较小的初始参数协方差。

InitialF是一个可调属性。您可以在对象处于锁定状态时更改它。

默认值:[1 eps]

InitialOutputs

测量输出的初始值缓冲在有限历史估计中,指定为0或者作为(W+nf)-乘1向量,其中W窗长和nf多项式的阶数是多少F)在构造对象时指定的参数。

InitialOutputs属性提供了一种控制算法初始行为的方法。

InitialOutputs设置为0,对象用0填充缓冲区。

如果初始缓冲区设置为0或者没有包含足够的信息,您将在评估的初始阶段看到一条警告消息。几个周期后,警告应该会消失。缓冲足够信息所需的周期数取决于多项式的顺序和输入延迟。如果警告仍然存在,您应该评估信号的内容。

指定InitialOutputs只有当历史有限的

InitialOutputs是一个可调属性。你可以改变InitialOutputs当对象处于锁定状态时。

默认值:0

InitialInputs

有限历史窗口中输入的初始值,指定为0或者作为(W++nk-1)-乘1向量,其中W是窗口长度。的向量B)多项式阶和nk输入延迟向量是你在构造recursiveOE对象。

InitialInputs属性提供了一种控制算法初始行为的方法。

InitialInputs设置为0,对象用0填充缓冲区。

如果初始缓冲区设置为0或者没有包含足够的信息,您将在评估的初始阶段看到一条警告消息。几个周期后,警告应该会消失。缓冲足够信息所需的周期数取决于多项式的顺序和输入延迟。如果警告仍然存在,您应该评估信号的内容。

指定InitialInputs只有当历史有限的

InitialInputs是一个可调属性。你可以改变InitialInputs当对象处于锁定状态时。

默认值:0

ParameterCovariance

估计的协方差P的参数,返回为N——- - - - - -N对称正定矩阵。N是要估计的参数的数目。软件计算P假设残差(估计输出与测量输出之间的差值)为白噪声,这些残差的方差为1。

ParameterCovariance仅适用于EstimationMethod“ForgettingFactor”“KalmanFilter”或者当历史有限的

的解释P的设置历史而且EstimationMethod属性。

  • 如果历史无限,那么你的EstimationMethod选择的结果如下:

    • “ForgettingFactor”- (R2/ 2)P近似等于估计参数的协方差矩阵,在哪里R2是残差的真实方差。

    • “KalmanFilter”- - - - - -R2P是估计参数的协方差矩阵,和R1/R2为参数变化的协方差矩阵。在这里,R1协方差矩阵是你指定的吗ProcessNoiseCovariance

  • 如果历史有限的(滑动窗口估计)-R2P是估计参数的协方差。滑动窗口算法在参数估计过程中没有使用这种协方差。但是,该算法确实计算输出的协方差,以便您可以将其用于统计评估。

ParameterCovariance是只读属性,在创建对象后初始为空。属性后填充一步命令进行在线参数估计。

InitialParameterCovariance

初始参数估计的协方差,指定为下列之一:

  • 实正标量,α-协方差矩阵是N——- - - - - -N对角矩阵,α作为对角线元素。N是要估计的参数的数目。

  • 实正标量的向量,[α1、……αN协方差矩阵是一个N——- - - - - -N对角矩阵,带有[α1、……αN]作为对角线元素。

  • N——- - - - - -N对称正定矩阵。

InitialParameterCovariance表示初始参数估计中的不确定性。对于较大的值InitialParameterCovariance在初始估计使用时,对初始参数值的重视程度较低,对实测数据的重视程度较高一步

仅在以下情况下使用EstimationMethod“ForgettingFactor”“KalmanFilter”

InitialParameterCovariance是一个可调属性。您可以在对象处于锁定状态时更改它。

默认值:10000

EstimationMethod

递归估计算法用于模型参数的在线估计,指定为以下值之一:

  • “ForgettingFactor”—参数估计的算法

  • “KalmanFilter”—参数估计的算法

  • “NormalizedGradient”—参数估计的算法

  • “梯度”参数估计采用非归一化梯度算法

遗忘因子和卡尔曼滤波算法比梯度法和非归一化梯度法计算量更大。然而,它们具有更好的收敛性。有关这些算法的信息,请参见在线参数估计的递归算法

这些方法都使用无限的数据历史,并且仅在以下情况下可用历史“无限”

EstimationMethod是不可调属性。方法锁定对象后,不能在执行期间更改它一步命令。

默认值:遗忘因子

ForgettingFactor

遗忘因子,λ,与参数估计相关,指定为范围(0,1]中的标量。

假设系统大致保持不变T0样本。你可以选择λ这样:

T 0 1 1 λ

  • 设置λ= 1对应于“不遗忘”和估计常数系数。

  • 设置λ< 1暗示过去的测量对参数估计不那么重要,可以“忘记”。集λ< 1估计时变系数。

典型的选择λ都在这个范围内(0.98 - 0.995)

仅在以下情况下使用EstimationMethod“ForgettingFactor”

ForgettingFactor是一个可调属性。您可以在对象处于锁定状态时更改它。

默认值:1

EnableAdapation

启用或禁用参数估计,指定为以下之一:

  • 真正的1- - -一步命令估计该时间步长的参数值并更新参数值。

  • 0- - -一步命令不会更新该时间步骤的参数,而是输出最后的估计值。当系统进入参数值不随时间变化的模式时,可以使用此选项。

    请注意

    如果你设置EnableAdapation时,仍然必须执行一步命令。不要跳过一步保持参数值不变,因为参数估计依赖于当前和过去的I/O测量。一步确保过去的I/O数据被存储,即使它没有更新参数。

EnableAdapation是一个可调属性。您可以在对象处于锁定状态时更改它。

默认值:真正的

数据类型

参数的浮点精度,指定为以下值之一:

  • “双”-双精度浮点数

  • “单一”—单精度浮点数

设置数据类型“单一”节省内存,但导致丢失精度。指定数据类型根据将在其中部署生成代码的目标处理器所需的精度。

数据类型是不可调属性。它只能在对象构造使用期间设置名称,值参数,之后不能更改。

默认值:“双”

ProcessNoiseCovariance

参数变化的协方差矩阵,指定为下列之一:

  • 实非负标量,α-协方差矩阵是N——- - - - - -N对角矩阵,α作为对角线元素。

  • 实非负标量的向量,[α1、……αN协方差矩阵是一个N——- - - - - -N对角矩阵,带有[α1、……αN]作为对角线元素。

  • N——- - - - - -N对称正半定矩阵。

N是要估计的参数的数目。

ProcessNoiseCovariance适用于以下情况EstimationMethod“KalmanFilter”

卡尔曼滤波算法将参数视为动态系统的状态,利用卡尔曼滤波对这些参数进行估计。ProcessNoiseCovariance是作用于这些参数的过程噪声的协方差。噪声协方差矩阵中的零值对应于估计常数系数。大于0的值对应时变参数。对快速变化的参数使用大值。但是,数值越大,参数估计的噪声越大。

ProcessNoiseCovariance是一个可调属性。您可以在对象处于锁定状态时更改它。

默认值:0.1

AdaptationGain

适应增益,γ,用于梯度递归估计算法,指定为正标量。

AdaptationGain适用于以下情况EstimationMethod“梯度”“NormalizedGradient”

为指定一个大值AdaptationGain当你的测量有一个高信噪比。

AdaptationGain是一个可调属性。您可以在对象处于锁定状态时更改它。

默认值:1

NormalizationBias

偏差在自适应增益缩放中使用“NormalizedGradient”方法,指定为非负标量。

NormalizationBias适用于以下情况EstimationMethod“NormalizedGradient”

归一化梯度算法将每一步的自适应增益除以梯度向量的双范数的平方。如果梯度接近于零,这可能会导致估计参数的跳跃。NormalizationBias是引入到分母中的术语,以防止这些跳转。增加NormalizationBias如果你观察到估计参数的跳跃。

NormalizationBias是一个可调属性。您可以在对象处于锁定状态时更改它。

默认值:每股收益

历史

定义使用哪种递归算法的数据历史类型,指定为:

  • “无限”-使用一种算法,目的是从模拟开始的所有时间步骤中最小化观察到的输出和预测输出之间的误差。

  • “有限”-使用一种算法,目的是在有限数量的过去时间步骤中最小化观察和预测输出之间的误差。

具有无限历史记录的算法旨在产生参数估计,以解释自模拟开始以来的所有数据。这些算法仍然使用固定数量的内存,不会随着时间的推移而增长。对象的多种算法“无限”历史类型。指定此选项将激活EstimationMethod属性,使用该属性指定算法。

具有有限历史的算法旨在产生只能解释有限数量的过去数据样本的参数估计。这个方法也被称为滑动窗口估计。对象提供了一种算法“有限”类型。指定此选项将激活WindowLength属性设置窗口的大小。

有关递归估计方法的更多信息,请参见在线参数估计的递归算法

历史是不可调属性。它只能在对象构造使用期间设置名称,值参数,之后不能更改。

默认值:“无限”

WindowLength

窗口大小决定用于滑动窗口估计方法的时间样本数量,指定为正整数。指定WindowLength只有当历史有限的

选择一个能够平衡估计性能与计算和内存负担的窗口大小。规模因素包括模型中参数的数量和时间方差。总是指定窗口长度在示例中,即使使用基于帧的输入处理。

WindowLength必须大于或等于估计参数的数目。

合适的窗口长度与您使用的是基于样本的输入处理还是基于帧的输入处理无关InputProcessing).但是,当使用基于帧的处理时,窗口长度必须大于或等于帧中包含的样本(时间步长)的数量。

WindowLength是不可调属性。它只能在对象构造使用期间设置名称,值参数,之后不能更改。

默认值:200

InputProcessing

选项,用于基于样本或基于帧的输入处理,指定为字符向量或字符串。

  • 纸浆包处理是对每次一个样本的信号流进行处理。

  • 框架处理是在包含多个时间步长的样本的信号上进行的。许多机器传感器接口封装多个样品,并将这些样品一起传输到帧中。框架处理允许您直接输入该数据,而不必首先解压缩它。

你的InputProcessing规格会影响输入和输出信号的尺寸一步命令:

[theta,EstimatedOutput] = step(obj,y,u)

  • 纸浆包

    • yu,EstimatedOutput是标量。

    • 框架每帧样本

      • yu,EstimatedOutput1的向量。

InputProcessing是不可调属性。它只能在对象构造使用期间设置名称,值参数,之后不能更改。

默认值:“纸浆包”

输出参数

全部折叠

用于SISO输出误差多项式模型的在线参数估计的系统对象,返回为recursiveOE系统对象。使用指定的模型顺序和属性创建此对象。使用一步命令来估计输出误差模型多项式的系数。然后,您可以使用点表示法访问估计的系数和参数协方差。例如,键入obj。B要查看估计的B多项式系数。

更多关于

全部折叠

输出误差模型结构

一般输出误差模型结构为:

y t ) B ) F ) u t n k ) + e t )

输出误差模型的阶为:

n b B ) b 1 + b 2 1 + ... + b n b n b + 1 n f F ) 1 + f 1 - 1 + ... + f n f - n f

提示

  • 从R2016b开始,而不是使用一步命令来更新模型参数估计值,您可以调用带有输入参数的System对象,就像调用函数一样。例如,[B,F,EstimatedOutput] = step(obj,y,u)而且[B,F,EstimatedOutput] = obj(y,u)请执行相同的操作。

扩展功能

版本历史

在R2015b中引入