利用状态空间估计降低模型阶数
降低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);
由于数据是通过模拟线性化模型得到的,因此数据与模型线性化响应完全匹配。
确定一个状态空间模型,该模型具有适当适合数据的降阶。
确定最优模型顺序。
Nx = 1:9;Sys1 = ssest(data,nx,“DisturbanceModel”,“没有”);
所指定的阶的模型的汉克尔奇异值(SVD)图nx
出现了。
具有相对较小汉克尔奇异值的状态可以被安全地丢弃。图中建议使用五阶模型。
在MATLAB中®命令提示符,为估计的状态空间模型选择模型顺序。指定模型顺序为5
,或按输入使用默认的顺序值。
将数据与估计模型进行比较。
比较(数据、sys1);
该图显示了两者的匹配百分比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);
更新后的选项集会产生更适合的百分比sys2
.