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([],::),选择);
模型初始状态的选择性估计
通过固定模型的第一个状态,并允许估计模型的第二个状态,有选择地估计模型的初始状态。
创建一个非线性灰盒模型。
文件名=“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);
输入参数
sys
- - - - - -识别模型
中的难点
对象|idgrey
对象|idnlarx
对象|idnlhw
对象|idnlgrey
对象
已识别的模型,其初始状态被估计,表示为线性状态空间(中的难点
或idgrey
)或非线性模型(idnlarx
,idnlhw
,或idnlgrey
).
地平线
- - - - - -计算模型响应的预测范围
1
(默认)|正整数1
而且正
选项
- - - - - -的估计选项findstates
findstates
选项设置
的估计选项findstates
,指定为使用创建的选项集findstatesOptions
输出参数
x0
-估计的初始状态
向量|矩阵
模型初始状态估计sys
,作为向量或矩阵返回。对于多次实验数据,x0
是一个矩阵,每个实验有一列。
报告
-初始状态估计信息
结构
初始状态估计信息,作为结构返回。报告
包含有关所使用的数据、状态协方差以及为搜索初始状态而执行的任何数值优化的结果的信息。报告
具有以下字段:
报告字段 | 描述 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
状态 |
总结初始状态是如何估计的。 |
||||||||||||||||
方法 |
所使用的搜索方法。 |
||||||||||||||||
协方差 |
状态估计的协方差,返回为aNs——- - - - - -Ns矩阵,Ns是状态数。 |
||||||||||||||||
DataUsed |
用于估计的数据的属性,作为具有以下字段的结构返回。
|
||||||||||||||||
终止 |
用于非线性模型初始状态估计的迭代搜索的终止条件。结构,使用以下字段:
|
扩展功能
自动平行支撑金宝app
通过使用并行计算工具箱™自动并行运行计算来加速代码。
并行计算支持可用于使用金宝applsqnonlin
搜索方法(需要优化工具箱™)。要启用并行计算,请使用findstatesOptions
,设置SearchMethod
来“lsqnonlin”
,并设置SearchOptions.Advanced.UseParallel
来真正的
.
例如:
opt = findstatesOptions;opt.SearchMethod =“lsqnonlin”;opt.SearchOptions.Advanced.UseParallel = true;
版本历史
在R2015a中引入
另请参阅
Matlabコマンド
次のmatlabコマンドに対応するリンクがクリックされました。
コマンドをmatlabコマンドウィンドウに入力して実行してください。Webブラウザ,はMATLABコマンドをサポ,トしていません。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。