标签:
idgrey灰箱系统辨识结构化greyest |
分类: 信号处理 |
指定线性灰箱模型的结构
[A,B,C,D] = myfunc(par1,par2,...,parN,Ts,aux1,aux2,...)
矩阵A、B、C、D是由par1,par2,...parN参数化的矩阵。噪声矩阵K和初始状态向量x0不被myfunc参数化,但它们可以由模型参数来估计,要配置辨识K和x0,可以通过设置greyestOptions。
[A,B,C,D,K,x0] = myfunc(par1,par2,...,parN,Ts,aux1,aux2,...)
创建函数表示灰箱模型
function [A,B,C,D,K,x0] = myfunc(par,T)
A = [0 1; 0 par(1)];
B = [0;par(2)];
C = eye(2);
D = zeros(2,1);
K = zeros(2,2);
x0 =[par(3);0];
par = [-1; 0.25; 0];
aux = {};
T = 0;
m = idgrey('myfunc',par,'c',aux,T);
par是用户定义的参数向量,包含了它们的初始名义值。在这个例子中,所有标量参数集中在了par向量中,当然它们也可以作为myfunc的独立输入参数。'c'指定模型为连续时间。aux表示额外参数,由于这个例子中没有额外参数,所以设置为aux={}。T表示采样间隔,T=0表示是连续时间模型。
m_est = greyest(data,m)
辨识热扩散中的连续时间灰箱模型
\[\frac{\partial x(t,\xi)}{\partial t} = \kappa \frac{\partial^2x(t,\xi)}{\partial \xi^2}\]
\[\frac{\partial^2x(t,\xi)}{\partial \xi^2} = \frac{x(t,\xi+\Delta L)-2x(t,\xi)+x(t,\xi-\Delta L)}{(\Delta L)^2} \\ where \quad \xi = k\cdot \Delta L\]
\[k\cdot \Delta L \le \xi \le (k+1)\Delta L\]
\(x\) 的维数决定于空间近似划分的网格大小 \(\Delta
L\) 。
function [A,B,C,D,K,x0] = heatd(kappa, htf, T, Ngrid, L,
temp)
% ODE file parameterizing the heat diffusion model
% kappa (first parameter) - heat diffusion coefficient
% htf (second parameter) - heat transfer coefficient
%
at the far end of rod
% Auxiliary variables for computing state-space matrices:
% Ngrid: Number of points in the space-discretization
% L: Length of the rod
% temp: Initial room temperature (uniform)
% Compute space interval
deltaL = L/Ngrid;
% A matrix
A = zeros(Ngrid,Ngrid);
for kk = 2:Ngrid-1
end
% Boundary condition on insulated end
A(1,1) = -1; A(1,2) = 1;
A(Ngrid,Ngrid-1) = 1;
A(Ngrid,Ngrid) = -1;
A = A*kappa/deltaL/deltaL;
% B matrix
B = zeros(Ngrid,1);
B(Ngrid,1) = htf/deltaL;
% C matrix
C = zeros(1,Ngrid);
C(1,1) = 1;
% D matrix (fixed to zero)
D = 0;
% K matrix: fixed to zero
K = zeros(Ngrid,1);
% Initial states: fixed to room temperature
x0 = temp*ones(Ngrid,1);
m = idgrey('heatd', {0.27 1}, 'c', {10, 1, 22});
me = greyest(data,m)
m.Structure.ExtraArgs = {20,1,22};
me = greyest(data,m);
上面的语法使用ExtraArgs属性来指定更大更细的网格Ngrid。
辨识离散灰箱模型
这里w和e是相互独立的白噪声项,其协方差矩阵分别为R1和R2,R1 =
E{ww‘}为2*2的矩阵,R2=E{ee'}为标量。par1,par2,par3和par4表示待估计的未知参数。
function [A,B,C,D,K] = mynoise(par,T,aux)
R2 = aux(1); % Known measurement noise variance
A = [par(1) par(2);1 0];
B = [1;0];
C = [par(3) par(4)];
D = 0;
R1 = [par(5) 0;0 0];
[~,K] = kalman(ss(A,eye(2),C,0,T),R1,R2); % Uses
Control System Toolbox product u=[]
par1 = 0.1; % Initial guess for A(1,1)
par2 = -2; % Initial guess for A(1,2)
par3 = 1; % Initial guess for
C(1,1)
par4 = 3; % Initial guess for
C(1,2)
par5 = 0.2; % Initial guess for R1(1,1)
Pvec = [par1; par2; par3; par4; par5]
auxVal = 1; % R2=1
Minit = idgrey('mynoise',Pvec,'d',auxVal);
'd'表示离散时间系统。
opt = greyestOptions;
opt.InitialState = 'zero';
opt.Display = 'full';
Model = greyest(data,Minit,opt)
data为以输入输出数据构造的iddata或idfrd对象。
前一篇:Matlab做状态空间辨识2