MATLAB-在命令行估计状态空间模型

这篇具有很好参考价值的文章主要介绍了MATLAB-在命令行估计状态空间模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

黑箱与结构化状态空间模型估计

黑盒估计

在这种方法中,您可以指定模型顺序,也可以指定配置状态空间矩阵总体结构的其他模型结构属性。您使用数据和模型顺序作为主要输入参数调用ssest、ssregest或n4sid,并使用名称-值对指定任何其他属性,例如模型采样时间、存在馈通、没有噪声分量等。您不能直接使用A、B、C、D、K和X0矩阵的系数。

结构化估计

在这种方法中,您创建并配置一个idss模型,其中包含所有系统矩阵的初始值。可以使用idss模型的Structure属性指定所有参数约束。例如,可以将系统矩阵的某些系数指定为固定系数,并对其他系数的值施加最小/最大界限。对于参数化的快速配置以及是否估计馈通和扰动动力学,请使用ssform。
使用所需约束配置idss模型后,将此模型指定为ssest命令的输入参数。不能使用n4sid或ssregest进行结构化估计。

提示

结构化估计方法也称为灰箱建模。然而,在此工具箱中,“灰盒建模”术语仅在提及idgrey和idnlgrey模型时使用。
使用结构化估计方法,无法指定状态空间系数之间的关系。每个系数基本上都被视为独立于其他系数。为了施加依赖关系,或使用更复杂的参数化形式,请使用idgrey模型和greyest估计器。

使用ssest、ssregest和n4sid估计状态空间模型 

先决条件

将输入输出数据表示为iddata对象,或将频率响应数据表示为frd或idfrd对象。请参见使用iddata对象表示时域和频域数据。有关支持的数据格式,请参见状态空间模型支持的数据。
执行数据预处理。为了在使用时域数据时提高结果的准确性,可以减少数据或指定输入/输出偏移量级别作为估计选项。请参阅为系统识别准备数据的方法。
选择模型订单。当您不知道模型订单时,搜索并选择订单。有关详细信息,请参见命令行中的“使用选定订单估算模型”。

 您可以使用迭代估计命令ssest估计连续时间和离散时间状态空间模型,该命令可以最小化预测误差,以获得最大似然值。
使用以下常规语法配置和估计状态空间模型:

m = ssest(data,n,opt,Name,Value)

其中,data是估计数据,n是模型顺序,opt包含用于配置状态空间模型估计的选项。这些选项包括处理初始条件、输入和输出偏移、估计焦点和搜索算法选项。opt后面可以是名称-值对输入参数,这些参数指定可选的模型结构属性,例如feedthrough的存在、模型的规范形式和输入延迟。
作为ssest的替代方法,您可以使用非迭代子空间估值器n4sid或ssregest:

m = n4sid(data,n,opt,Name,Value)
m = ssregest(data,n,opt,Name,Value)

除非将采样时间指定为名称-值对输入参数,否则n4sid和ssregest将估计离散时间模型,而ssest将估计连续时间模型。

ssest使用n4sid来初始化状态空间矩阵,估计模型所需的时间比n4sid长,但通常更适合数据。

有关验证模型的信息,请参阅估算后验证模型 

 A、B、C矩阵结构的选择

默认情况下,A、B和C状态空间矩阵的所有条目都被视为自由参数。使用ssest的Form-name值对输入参数,您可以选择使用较少参数的各种规范形式,如伴生形式和模态形式。
有关估计特定状态空间参数化的详细信息,请参见:

自由参数化状态空间模型的估计

用规范参数化估计状态空间模型

带结构参数化的状态空间模型估计

在连续时间和离散时间表示法之间进行选择

对于状态空间模型的估计,您可以选择在零和估计数据之间切换模型样本时间。您可以使用Ts名称-值对输入参数来实现这一点。
默认情况下,ssest估计连续时间模型。如果使用的数据集具有非零采样时间、数据(包括所有时域数据),也可以使用以下方法估计离散时间模型:

model = ssest(data,nx,'Ts',data.Ts);

如果使用的是连续时间频域数据,则无法估计离散时间模型。
默认情况下,n4sid和ssregest估计的模型的采样时间与数据的采样时间匹配。因此,对于时域数据,n4sid和ssregest提供了离散时间模型。您可以使用以下方法估计连续时间模型:

model = n4sid(data,nx,'Ts',0);

如果使用的是连续时间频域数据,则无法估计离散时间模型。
默认情况下,n4sid和ssregest估计的模型的采样时间与数据的采样时间匹配。因此,对于时域数据,n4sid和ssregest提供了离散时间模型。您可以使用以下方法估计连续时间模型:

model = n4sid(data,nx,'Ts',0);

 或者

model = ssregest(data,nx,'Ts',0);

选择估计D、K和X0矩阵

对于具有任何参数化的状态空间模型,可以指定是否估计D、K和X0矩阵,这些矩阵分别表示输入到输出反馈、噪声模型和初始状态。
对于具有结构化参数化的状态空间模型,还可以指定估计D矩阵。然而,对于自由形式和规范形式,D矩阵的结构是根据您对“Feedthrough”名称-值对输入参数的选择来设置的。

D矩阵

默认情况下,不估计D矩阵,其值固定为零,静态模型除外。

黑盒估计:使用Feedthrough名称-值对输入参数表示各个输入是否存在Feedthough。例如,如果是双输入模型,只有第二个输入有馈通,则使用:

model = n4sid(data,n,'Feedthrough',[false true]);

 结构化估计:配置init_sys.Structure的值。D、 其中init_sys是表示所需模型结构的idss模型。要强制第i个输入无馈通,请设置:

init_sys.Structure.D.Value(:,i) = 0;
init_sys.Structure.D.Free = true;
init_sys.Structure.D.Free(:,i) = false;

第一行将第i列D的值指定为零。下一行将D的所有元素指定为自由、可估计的参数。最后一行指定D矩阵的第i列固定用于估计。
或者,将ssform与“Feedthrough”名称值对一起使用。

K矩阵

K表示模型的噪声矩阵,即模型的噪声分量为:
x=Ax+Ke
yn=Cx+e
对于频域数据,不估计噪声模型,K设置为0。对于时域数据,默认情况下,K在黑箱估计设置中估计。yn是扰动对模型输出的贡献。

黑盒估计:使用DisturbanceModel名称-值对输入参数来指示扰动分量是固定为零(指定value='none')还是估计为自由参数(指定value='estimate')。例如,使用:

model = n4sid(data,n,'DisturbanceModel','none');

结构化估计:配置init_sys.Structure的值。K参数,其中init_sys是表示所需模型结构的idss模型。您可以将一些K矩阵系数固定为已知值,并规定自由系数的最小/最大界限。例如,要仅估计双输出模型的K矩阵的第一列:

kpar = init_sys.Structure.K;
kpar.Free(:,1) = true;
kpar.Free(:,2) = false;
kpar.Value(:,2) = 0; % second column value is fixed to zero
init_sys.Structure.K = kpar;

或者,使用ssform。
当不确定如何轻松固定或释放K的所有系数时,最初您可以忽略估算K中的噪声参数,以专注于实现系统动力学的合理模型。估算动态模型后,可以使用ssest优化模型,同时将K参数配置为自由参数。例如:

init_sys = ssest(data, n,'DisturbanceModel','none');
init_sys.Structure.K.Free = true;
sys = ssest(data,init_sys);

其中init_sys是无噪声的动态模型。
要在现有模型中将K设置为零,可以将其“值”设置为0,将“自由”标志设置为false:

m.Structure.K.Value = 0;
m.Structure.K.Free = false;

X0矩阵

初始状态向量X0作为模型估计的副产品获得。n4sid、ssest和ssregest命令返回X0的值作为第二个输出参数。您可以使用InitialState估计选项选择在模型估计期间如何处理初始条件。使用n4sidOptions(用于n4sid)、ssestOptions(对于ssest)或ssregestOptions(针对ssregest)创建估算选项集。例如,为了在使用n4sid进行估计期间保持初始状态为零:

opt = n4sidOptions;
opt.InitialState = 'zero';
[m,X0] = n4sid(data,n,opt);

返回的X0变量是长度为n的零矢量。
当您使用多重实验数据估计模型时,X0矩阵包含的列数与数据实验的列数相同。
有关InitialStates选项值的完整列表,请参阅为迭代估计算法指定初始状态。文章来源地址https://www.toymoban.com/news/detail-646251.html

相关主题

损失函数和模型质量度量

到了这里,关于MATLAB-在命令行估计状态空间模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包