使用零/极/增益参数的估计模型
这个例子展示了如何估计一个由极点、零和增益参数化的模型。该示例需要Control System Toolbox™软件。
使用复共轭极点/零对对模型进行参数化。当您使用复共轭参数对参数化一个真实的灰盒模型时,软件会更新参数值,这样估计的值也是复共轭对。
加载测量数据。
负载zpkestdatazd;
包含测量数据的变量zd被加载到MATLAB®工作区中。
情节(zd);
输出显示输入延迟大约为3.14秒。
使用零极增益(zpk)形式估计模型zpkestODE
函数。要查看此函数,输入
类型zpkestODE
function [a,b,c,d] = zpkestODE(z,p,k,Ts,varargin) %zpkestODE ODE文件,该文件使用极点和% 0作为参数来参数化一个状态空间模型。% %需要控制系统工具箱。% Copyright 2011 The MathWorks, Inc. sysc = zpk(z,p,k);if Ts==0 [a,b,c,d] = ssdata(sysc);else [a,b,c,d] = ssdata(c2d(sysc,Ts,'foh'));结束
创建一个与ODE函数关联的线性灰盒模型。
假设模型有五个极点和四个零。假设两个极点和两个零点是复共轭对。
Z = [-0.5+1i, -0.5-1i, -0.5, -1];P = [-1.11+2i, -1.11-2i, -3.01, -4.01, -0.02];k = 10.1;参数= {z,磷、钾};t = 0;odefun = @zpkestODE;init_sys = idgrey (odefun、参数“cd”, {}, Ts,“InputDelay”, 3.14);
z
,p
,k
是模型参数的初始猜测。
init_sys
的idgrey模型是否与zpkestODE.m
函数。的“cd”
标志表示ODE函数,zpkestODE
,根据采样周期返回连续或离散模型。
评估初始模型提供的拟合质量。
compareOpt = compareOptions (“InitialCondition”,“零”);比较(zd init_sys compareOpt);
初始模型的拟合度很差。
指定评估选项。
选择= greyestOptions (“InitialState”,“零”,“DisturbanceModel”,“没有”,“SearchMethod”,“玲娜”);
估计模型。
sys =老龄化最严重的(zd、init_sys选择);
sys
,一个idgrey模型,包含估计的零极增益模型参数。
比较估计值和初始参数值。
[getpvec (init_sys) getpvec (sys)]
ans =10×2复杂-0.5000 + 1.0000i -1.6158 + 1.6173i -0.5000 + 0.0000i -0.9416 + 0.0000i -1.0000 + 0.0000i -1.1100 + 2.0000i -2.4050 + 1.4340i -1.1100 -2.4050 - 1.4340i -3.0100 + 0.0000i -2.3388 + 0.0000i -4.0100 + 0.0000i -0.0200 + 0.0000i -0.0082 + 0.0000i 10.1000 + 0.0000i 9.7881 + 0.0000i
的getpvec
命令返回模型的参数值。在上面的输出中,每一行都显示相应的初始和估计的参数值。所有最初指定为复共轭对的参数在估计后仍然是复共轭对。
评估由估计模型提供的拟合质量。
比较(zd、init_sys sys, compareOpt);
sys
与测量数据更接近(98.35%)。