无损卡尔曼滤波ukf matlab程序

ukf(无迹卡尔曼滤波)算法的matlab程序.function[x,P]=ukf(fstate,x,P,hmeas,z,Q,R)%UKFUnscentedKalmanFilterfornonlineardynamicsystems%[x,P]=ukf(f,x,P,h,z,Q,R)returnsstateestimate,xandstatecovariance,P%fornonlineardynamicsystem(forsimplicity,noisesareassumedasadditive):%x_k+1=f(x_k)+w_k%z_k=h(x_k)+v_k%wherew~N(0,Q)meaningwisgaussiannoisewithcovarianceQ%v~N(0,R)meaningvisgaussiannoisewithcovarianceR%Inputs:f:functionhandleforf(x)%x:"apriori"stateestimate%P:"apriori"estimatedstatecovariance%h:fanctionhandleforh(x)%z:currentmeasurement%Q:processnoisecovariance%R:measurementnoisecovariance%Output:x:"aposteriori"stateestimate%P:"aposteriori"statecovariance%%Example:%{n=3;%numberofstateq=0.1;%stdofprocessr=0.1;%stdofmeasurementQ=q^2*eye(n);%covarianceofprocessR=r^2;%covarianceofmeasurementf=@(x)[x(2);x(3);0.05*x(1)*(x(2)+x(3))];%nonlinearstateequationsh=@(x)x(1);%measurementequations=[0;0;1];%initialstatex=s+q*randn(3,1);%initialstate%initialstatewithnoiseP=eye(n);%initialstatecovraianceN=20;%totaldynamicstepsxV=zeros(n,N);%estmate%allocatememorysV=zeros(n,N);%actualzV=zeros(1,N);fork=1:Nz=h(s)+r*randn;%measurmentssV(:,k)=s;%saveactualstatezV(k)=z;%savemeasurment[x,P]=ukf(f,x,P,h,z,Q,R);%ekfxV(:,k)=x;%saveestimates=f(s)+q*randn(3,1);%updateprocessendfork=1:3%plotresultssubplot(3,1,k)plot(1:N,sV(k,:),'-',1:N,xV(k,:),'--')end%}%%ByYiCaoatCranfieldUniversity,04/01/2008%L=numel(x);%numerofstatesm=numel(z);%numerofmeasurementsalpha=1e-3;%default,tunableki=0;%default,tunablebeta=2;%default,tunablelambda=alpha^2*(L+ki)-L;%scalingfactorc=L+lambda;%scalingfactorWm=[lambda/c0.5/c+zeros(1,2*L)];%weightsformeansWc=Wm;Wc(1)=Wc(1)+(1-alpha^2+beta);%weightsforcovariancec=sqrt(c);X=sigmas(x,P,c);%sigmapointsaroundx[x1,X1,P1,X2]=ut(fstate,X,Wm,Wc,L,Q);%unscentedtransformationofprocess%X1=sigmas(x1,P1,c);%sigmapointsaroundx1%X2=X1-x1(:,ones(1,size(X1,2)));%deviationofX1[z1,Z1,P2,Z2]=ut(hmeas,X1,Wm,Wc,m,R);%unscentedtransformationofmeasurmentsP12=X2*diag(Wc)*Z2';%transformedcross-covarianceK=P12*inv(P2);x=x1+K*(z-z1);%stateupdateP=P1-K*P12';%covarianceupdatefunction[y,Y,P,Y1]=ut(f,X,Wm,Wc,n,R)%UnscentedTransformation%Input:%f:nonlinearmap%X:sigmapoints%Wm:weightsformean%Wc:weightsforcovraiance%n:numerofoutputsoff%R:additivecovariance%Output:%y:transformedmean%Y:transformedsmaplingpoints%P:transformedcovariance%Y1:transformeddeviationsL=size(X,2);y=zeros(n,1);Y=zeros(n,L);fork=1:LY(:,k)=f(X(:,k));y=y+Wm(k)*Y(:,k);endY1=Y-y(:,ones(1,L));P=Y1*diag(Wc)*Y1'+R;functionX=sigmas(x,P,c)%Sigmapointsaroundreferencepoint%Inputs:%x:referencepoint%P:covariance%c:coefficient%Output:%X:SigmapointsA=c*chol(P)';Y=x(:,ones(1,numel(x)));X=[xY+AY-A];

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?