扩展卡尔曼滤波的S函数实现

扩展卡尔曼滤波的S函数实现

ID:46785642

大小:60.21 KB

页数:8页

时间:2019-11-27

扩展卡尔曼滤波的S函数实现_第1页
扩展卡尔曼滤波的S函数实现_第2页
扩展卡尔曼滤波的S函数实现_第3页
扩展卡尔曼滤波的S函数实现_第4页
扩展卡尔曼滤波的S函数实现_第5页
资源描述:

《扩展卡尔曼滤波的S函数实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、扩展卡尔曼滤波器的s函数编写function[sys,x0,str,ts]=sekfs(t,x,u,flag)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes;case2,sys=mdlUpdate(t,x,u);case3,sys=mdlOutputs(t,x,u);case{1,4,9},sys=[];otherwiseerror(['Unhandledflag=',num2str(flag)]);endfunction[sys,x0,str,ts]=mdlInitializeSizessizes

2、=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=3;sizes.NumOutputs=1;sizes.NumInputs=1;sizes.DirFeedthrough=0;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=[4.500015.000015.0000];str=[];ts=1e-6;functionsys=mdlUpdate(t,x,u)globalQon;Qon=1;R=1e-2;Q=Qondiag([1e-21e-21e-2]);G_bas

3、al=4.5;%mmol/LX_basal=15;%mU/LI_basal=15;%mU/LP1=0.028735;%min-1P2=0.028344;%min-1P3=5.035e-5;%mU/LV1=12;%Ln=5/54;%minD=5;To=1e-6;%fori=1:3%forj=1:3%P(i,j)=x(3i+j);%end%endP=[0.0100;00.010;000.01];xp=zeros(3,size(x,2));xp(1,1)=x(1)+(-P1(x(1)-G_basal)-(x(2)-X_basal)x(1)+D)To;xp(2,

4、1)=x(2)+(-P2(x(2)-X_basal)+P3(x(3)-I_basal))To;xp(3,1)=x(3)+(-nx(3)+u(1)/V1)To;F=[-P1-x(2),-x(1),0;0,-P2,P3;0,0,-n];P=FPF'+Q;H=[1,0,0];K=PH'inv(HPH'+R);D=u(1);H=xp(1,1);xp=xp+K(D-H);P=P-KHP;%sys=[xp(1,1);xp(2,1);xp(3,1)];fori=1:3sys(i)=xp(i,1);end%fori=1:3%forj=1:3%sys(i,j)=P(3i+

5、j);%end%endfunctionsys=mdlOutputs(t,x,u)sys=x(1);Errorin'untitled/S-Function'whileexecutingM-FileS-function'sekfs',flag=2(update),attime0.MATLABerrormessage:Innermatrixdimensionsmustagree.哪里错了?最佳答案H=[1,0,0];K=PH'inv(HPH'+R);D=u(1);H=xp(1,1);xp=xp+K(D-H);P=P-KHP;H是一个31的矩阵,但在下面H=xp

6、(1,1),这时又变成一个数了,后面xp=xp+K(D-H);没有问题。但是P=P-KHP;这里就出现了矩阵维数不对。你换过来就行了。你的调用要是在for循环体中,那么你的输入参数比如x是否进行矩阵维数扩展,即表示成x(1,k)这种形式?(这条可能就是产生问题的最主要原因)另外x和u的维数是否正确?我看这个函数程序中的x应该是3维的列向量还有你函数中xp=zeros(3,size(x,2));这句所生成的是一个三维的列向量,那么下面的xp(1,1)..xp(3,1)这些调用是否合理等都需要认真考虑function[sys,x0,str,ts]=str_s

7、im(t,x,z,flag,T,n,R1,xinit,Pinit)%EKFSExtendedKalmanfilterS-functionforrekursiveidentification%ThisM-fileisdesignedtobeusedinaSimulinkS-functionblock.%ItimplementsanextendedKalmanfilterforjointstateestimation%andparametertracking.Sofar,onlyoutputerrorSISOmodelsare%supported%%Inpu

8、t:theta%Output:(dummy)%switchflag,%%%%%%

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。