主要内容

findstates

估计模型的初始状态

描述

例子

x0= findstates (sys,数据估计初始状态,x0,一个已确定的模型sys,使估计数据中模型响应与输出信号的拟合达到最大。

例子

x0= findstates (sys,数据,地平线的响应计算的预测范围sys

例子

x0= findstates (sys,数据,地平线,选项指定用于计算的其他选项x0

例子

x0,报告) = findstates (___交付关于初始状态估计的报告。报告返回前一个语法中的任何一个。

例子

全部折叠

创建一个非线性灰盒模型。该模型是一个有一个输入(电压)和两个输出(角位置和角速度)的直线直流电机。模型的结构由dcmotor_m指定。m文件。

文件名=“dcmotor_m”;Order = [2 1 2];参数= [0.24365;0.24964];nlgr = idnlgrey(文件名,顺序,参数);NLGR = setinit(NLGR,“固定”假(2,1));%设置初始状态为空

初始状态估计的加载数据。

负载(fullfile (matlabroot“工具箱”,“识别”,...“iddemos”,“数据”,“dcmotordata”));Z = iddata(y,u,0.1);

估计初始状态,使模型使用估计状态X0和测量输入u的响应尽可能接近测量输出y。

X0 = findstates(nlgr,z,Inf);

估计一个中的难点建模并模拟它,使估计模型的响应与估计数据的输出信号尽可能接近。

加载样例数据。

负载iddata1z1

从数据估计一个线性模型。

模型= sest(z1,2);

估计初始状态的值,以最适合测量的输出z1.y

x0est = findstates(model,z1,Inf);

模拟模型。

opt = simOptions(“InitialCondition”, x0);sim(模型、z1([],::),选择);

图中包含一个轴对象。标题为y1的axes对象包含一个line类型的对象。这个对象表示模型。

通过固定模型的第一个状态,并允许估计模型的第二个状态,有选择地估计模型的初始状态。

创建一个非线性灰盒模型。

文件名=“dcmotor_m”;Order = [2 1 2];参数= [0.24365;0.24964];nlgr = idnlgrey(文件名,顺序,参数);

该模型是一个有一个输入(电压)和两个输出(角位置和角速度)的直线直流电机。模型的结构由dcmotor_m.m文件。

加载估计数据。

负载(fullfile (matlabroot“工具箱”,“识别”,...“iddemos”,“数据”,“dcmotordata”));Z = iddata(y,u,0.1);

将第一个状态固定为零,并估计第二个状态的值。

X0spec = idpar(“x0”, (0, 0));x0spec.Free(1) = false;opt = findstatesOptions;opt.InitialState = x0spec;[X0,Report] = findstates(nlgr,z,Inf,opt)
X0 =2×10 0.0061
报告=状态:'通过模拟误差最小化估计'方法:'lsqnonlin'协方差:[2x2 double] DataUsed: [1x1 struct]终止:[1x1 struct]

创建一个非线性灰盒模型。

文件名=“dcmotor_m”;Order = [2 1 2];参数= [0.24365;0.24964];nlgr = idnlgrey(文件名,顺序,参数);

该模型是一个有一个输入(电压)和两个输出(角位置和角速度)的直线直流电机。模型的结构由dcmotor_m.m文件。

加载估计数据。

负载(fullfile (matlabroot“工具箱”,“识别”,...“iddemos”,“数据”,“dcmotordata”));Z = iddata(y,u,0.1);

为初始状态指定一个初始猜测。

X0spec = idpar(“x0”, (10; 10));

x0spec。免费的默认为true

估计初始状态

opt = findstatesOptions;opt.InitialState = x0spec;x0 = findstates(nlgr,z,Inf,opt)
x0 =2×10.0362 - -0.1322

创建一个非线性灰盒模型。

文件名=“dcmotor_m”;Order = [2 1 2];参数= [0.24365;0.24964];nlgr = idnlgrey(文件名,顺序,参数);集(nlgr,“InputName”,“电压”,“OutputName”,...角位置的,的角速度});

该模型是一个有一个输入(电压)和两个输出(角位置和角速度)的直线直流电机。模型的结构由dcmotor_m.m文件。

加载估计数据。

负载(fullfile (matlabroot“工具箱”,“识别”,...“iddemos”,“数据”,“dcmotordata”));Z = iddata(y,u,0.1,“名字”,直流电机的,...“InputName”,“电压”,“OutputName”,...角位置的,的角速度});

创建一个包含三个实验的数据集。

Z3 = merge(z,z,z);

选择实验估计初始状态:

  • 估计实验1和3的初始状态1

  • 估计实验1的初始状态2

固定的初始状态值为零。

X0spec = idpar(“x0”0(2、3));x0spec.Free(1,2) = false;x0spec。免费的(2,[2 3]) = false; opt = findstatesOptions; opt.InitialState = x0spec;

估计初始状态

[X0,EstInfo] = findstates(nlgr,z3,Inf,opt);

输入参数

全部折叠

已识别的模型,其初始状态被估计,表示为线性状态空间(中的难点idgrey)或非线性模型(idnlarx,idnlhw,或idnlgrey).

估计数据,指定为iddata具有匹配的输入/输出维度的对象sys

如果sys是一个线性模型,数据可以是频域iddata对象。为便于解释初始条件,设频率向量为数据原点对称。要将时域数据转换为频域数据,请使用fft“惠”输入参数,并确保有足够的零填充。在进行比较时适当地缩放数据x0在时域和频域之间。因为N-point fft时,输入/输出信号按1 /√(N),估计x0向量也被这个因子缩放。

计算响应的预测范围sys,指定为正整数1而且.最常用的值是:

  • 地平线= 1—最大限度地减少一步预测误差。的提前一步预测响应sys是比较输出信号在数据来确定x0.看到预测获取更多信息。

  • 地平线=无穷—最小化仿真误差。测量输出,Data.y的模拟响应sys对于测量的输入数据,Data.u是最小化。看到sim卡获取更多信息。

指定地平线1和之间的任何正整数,并有以下限制:

场景 地平线

具有时域数据的连续时间模型

1

连续频域数据(数据。Ts= 0)

输出误差模型(琐碎噪声分量):

  • 非线性灰盒(idnlgrey

  • Hammerstein-Wiener (idnlhw

  • 带扰动矩阵的线性状态空间,K0

无关紧要的

的任何值地平线返回相同的答案x0

非线性ARX (idnlarx 1

的估计选项findstates,指定为使用创建的选项集findstatesOptions

输出参数

全部折叠

模型初始状态估计sys,作为向量或矩阵返回。对于多次实验数据,x0是一个矩阵,每个实验有一列。

初始状态估计信息,作为结构返回。报告包含有关所使用的数据、状态协方差以及为搜索初始状态而执行的任何数值优化的结果的信息。报告具有以下字段:

报告字段 描述
状态

总结初始状态是如何估计的。

方法

所使用的搜索方法。

协方差

状态估计的协方差,返回为aNs——- - - - - -Ns矩阵,Ns是状态数。

DataUsed

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

描述
的名字

数据集的名称。

类型

数据类型。

长度

数据样本数量。

Ts

样品时间。

InterSample

输入样例间行为,作为以下值之一返回:

  • “zoh”-零阶保持器在样本之间保持分段恒定的输入信号。

  • “呸”-一阶保持器在样本之间保持分段线性输入信号。

  • “提单”—限带行为指连续时间输入信号在奈奎斯特频率以上的功率为零。

InputOffset

在估计过程中从时域输入数据中删除的偏移量。对于非线性模型,它是[]

OutputOffset

在估计过程中从时域输出数据中删除的偏移量。对于非线性模型,它是[]

终止

用于非线性模型初始状态估计的迭代搜索的终止条件。结构,使用以下字段:

描述
WhyStop

终止数值搜索的原因。

迭代

由估计算法执行的搜索迭代次数。

FirstOrderOptimality

-搜索算法结束时梯度搜索向量的norm。

FcnCount

目标函数被调用的次数。

UpdateNorm

最后一次迭代中梯度搜索向量的范数。搜索方法为时省略“lsqnonlin”“fmincon”

LastImprovement

最后一次迭代中的标准改进,以百分比表示。搜索方法为时省略“lsqnonlin”“fmincon”

算法

使用的算法“lsqnonlin”“fmincon”搜索方法。使用其他搜索方法时省略。

终止对于线性模型为空。

扩展功能

版本历史

在R2015a中引入