主要内容

利用状态空间估计降低模型阶数

降低Simulink的阶数金宝app®通过线性化模型并估计保留模型动态的低阶模型来建立模型。

这个例子需要Simulink和金宝app金宝appSimulink控制设计™工具箱。

考虑一下Simulink模金宝app型idF14Model.线性化这个模型得到一个九阶模型。然而,使用低阶模型可以在不太影响拟合质量的情况下捕获模型的动态。

得到线性化模型。

load_system (“idF14Model”);IO = getlinio(“idF14Model”);Sys_lin =线性化(“idF14Model”io);

sys_lin是一个具有两个输出和一个输入的九阶状态空间模型。

对线性化模型的阶跃响应进行模拟,并利用数据创建一个线性化模型iddata对象。

Ts = 0.0444;t = (0:Ts:4.44)';Y = step(sys_lin,t);数据= iddata([0 (20,2);y],[0 (20,1);(101,1)], Ts);

数据是一个iddata的步骤响应sys_lin

将数据与模型线性化进行比较。

比较(数据、sys_lin);

图中包含2个轴对象。坐标轴对象1包含2个line类型的对象。这些对象表示验证数据(y1), sys\_lin: 100%。坐标轴对象2包含2个line类型的对象。这些对象表示验证数据(y2), sys\_lin: 100%。

由于数据是通过模拟线性化模型得到的,因此数据与模型线性化响应完全匹配。

确定一个状态空间模型,该模型具有适当适合数据的降阶。

确定最优模型顺序。

Nx = 1:9;Sys1 = ssest(data,nx,“DisturbanceModel”“没有”);

所指定的阶的模型的汉克尔奇异值(SVD)图nx出现了。

具有相对较小汉克尔奇异值的状态可以被安全地丢弃。图中建议使用五阶模型。

在MATLAB中®命令提示符,为估计的状态空间模型选择模型顺序。指定模型顺序为5,或按输入使用默认的顺序值。

将数据与估计模型进行比较。

比较(数据、sys1);

图中包含2个轴对象。坐标轴对象1包含2个line类型的对象。这些对象表示验证数据(y1), sys1: 99.58%。坐标轴对象2包含2个line类型的对象。这些对象表示验证数据(y2), sys1: 99.65%。

该图显示了两者的匹配百分比sys1输出。模型阶数的四态降低导致拟合百分比的相对较小的降低。

检查搜索算法的停止条件。

sys1.Report.Termination.WhyStop
ans = '达到的最大迭代次数。'

创建一个评估选项集。指定“lm”搜索方法。将搜索迭代的最大次数从默认最大值20增加到50。

opt = ssestOptions(“SearchMethod”“lm”);opt.SearchOptions.MaxIterations = 50;opt.Display =“上”

使用估计选项集和标识状态空间模型sys1作为估计初始化模型。

Sys2 = ssest(data,sys1,opt);

比较线性化模型和估计模型的响应。

比较(数据、sys_lin sys2);

图中包含2个轴对象。Axes对象1包含3个line类型的对象。这些对象表示验证数据(y1), sys\_lin: 100%, sys2: 99.9%。坐标轴对象2包含3个line类型的对象。这些对象表示验证数据(y2), sys\_lin: 100%, sys2: 99.91%。

更新后的选项集会产生更适合的百分比sys2

另请参阅

(金宝appSimulink控制设计)|(金宝appSimulink控制设计)