分布式kalman滤波matlab代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%DKF ·Ö²¼Ê½kalmanÂ˲¨

close all

clear

clc

%³õʼ»¯

sNUM=25; %´«¸ÐÆ÷Êý

T=0.015; %²ÉÑùÖÜÆÚ

N=100; %ÿ¸ö´«¸ÐÆ÷²ÉÑùµãÊý

A0=2*[0,-1;1,0];

B0=5^2*eye(2);

A=eye(2)+T*A0+T^2/2*A0^2+T^3/6*A0;

B=T*B0;

H=[1,0;0,1];

%´«¸ÐÆ÷״̬³õÖµ

x0=[15;-10];

P0=10*eye(2);

for i=1:sNUM

x(:,1,i)=x0;

xg(:,1)=[0,0];

P(:,:,i)=P0;

end

err(:,1)=sum(x(:,1,:),3)/sNUM-xg(:,1);

Ex(:,1)=[P0(1,1);P0(2,2)];

%ÔëÉù

Q=10;

cv=10;

for i=1:sNUM

R(:,:,i)=cv^2*sqrt(i)*eye(2);

w(:,:,i)=sqrt(Q)*randn(2,N);

v(:,:,i)=sqrt(R(:,:,i))*randn(2,N);

end

%¹¹Ôì¹Û²âÍøÂç

T=connectionMb(sNUM); %¹Û²âÍøÂçÁ¬½Ó¾ØÕó

D=diag(sum(T,2)); %¶È¾ØÕó

L=D-T; %À-ÆÕÀ-˹¾ØÕó

%¹¹Ôì¹Û²âÖµ

for i=1:sNUM

for k=2:N

x(:,k,i)=A*x(:,k-1,i)+B*w(:,k,i);

z(:,k,i)=H*x(:,k,i)+v(:,k,i);

%˳±ã¼ÆËãÐÅÏ¢Á¿

u(:,k,i)=H'*inv(R(:,:,i))*z(:,k,i);

end

U(:,:,i)=H'*inv(R(:,:,i))*H;

end

%Â˲¨Ëã·¨

for k=2:N

for i=1:sNUM

T1=T+eye(sNUM);

% y(:,k,i)=reshape(u(:,k,:),2,sNUM)*T(:,i);

y=[0;0];

S=zeros(2);

for j=1:sNUM

y=y+T1(j,i)*u(:,k,j);

S=S+T1(j,i)* U(:,:,j);

end

M(:,:,i)=inv(inv(P(:,:,i))+S);

f(:,i)=xg(:,k-1)+M(:,:,i)*(y-S*xg(:,k-1));

P(:,:,i) =A*M(:,:,i)*A'+B*Q*B';

end

xk(1,k)=consencous(f(1,:)',L);

xk(2,k)=consencous(f(2,:)',L);

xg(:,k)=A*xk(:,k);

err(:,k)=sum(x(:,k,:),3)/sNUM-xg(:,k);

Ex(:,k)=[P(1,1,1);P(2,2,1)];

end

figure

subplot(2,1,1)

plot(err(1,:))

title('״̬Îó²îÇúÏß')

subplot(2,1,2)

plot(err(2,:))

figure

subplot(2,1,1)

plot(Ex(1,:))

title('״̬·½²îÇúÏß') subplot(2,1,2)

plot(Ex(2,:))

相关文档
最新文档