问题如下:在建模后利用S函数做卡尔曼滤波算法,其中涉及诸多时变的模型参数得在每次采样时刻的更新,因此编写了如下代码及大致建模框图,还有报错内容,还望各位能不吝赐教。 求解器采用的是变步长,最大步长设为1; 参数是用Mux混路后输入,
报错内容为:while executing MATLAB S-function 'KF', flag = 2 (update), at time 0.0.输入参数太多。
代码如下:
function [sys,x0,str,ts] = KF(t,x,u,flag)
switch flag,
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
case 2
sys=mdlUpdate(t,x,u);
case 3
sys=mdlOutputs(t,x,u);
case{1,4,9}
sys=[];
% Unexpected flags %
%%%%%%%%%%%%%%%%%%%%
otherwise
DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag));
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 2;
sizes.NumOutputs