⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 complexkalman.asv

📁 一个简单的kalman filter 滤波程序
💻 ASV
字号:
clear all
clc

%% 条件初值
measnoise=10;
accelnoise=0.5;
duration=100;
%%dt=0.2;
dt=0.1;

%% 系统模型
a=[1 0 1 0;0 1 0 1;0 0 1 0;0 0 0 1];
c=[1 0 0 0;0 1 0 0];
%% Q=accelnoise^2*[dt^4/4 dt^4/4 dt^3/2 dt^3/2;dt^4/4 dt^4/4 dt^3/2 dt^3/2;dt^3/2 dt^3/2 dt^2 dt^2;dt^3/2 dt^3/2 dt^2 dt^2];
 %% Q=0.0001*eye(4);
 %% Q=0.01*eye(4);
 
%% Q=[0.0001 0 0 0;0 0.0001 0 0;0 0 0.1 0;0 0 0 0.1];
%% R=measnoise^2*[dt^2 dt^2;dt^2 dt^2];
%% R=measnoise^2*eye(2);  %%为什么Q,R要取这样的值?
R=10^4*eye(2);

%% 赋初值
x=[0;0;0;0];
xhat=x;
pest=Q;
%% Inn=[0;0];

%% 
position=[];
positionmeasure=[];
positionhat=[];
Innovation=[];
Gaintk=[];
pp=[];




%% 循环程序
for t=0:dt:duration
    x=[10*sin(t);0;0;0];
    xest=x;
    
    processnoise=accelnoise*[dt^2/2;dt^2/2;dt;dt]*randn;
    x=a*x+processnoise;
    
    measurenoise=measnoise*[randn;randn];
    z=c*x+measurenoise;
    
    Inn=z-c*xest;
    
    s=c*pest*c'+R;
    
    K=pest*c'*inv(s);
    
    xhat=xest+K*Inn;
    
    %% P=(eye(4)-K*c)*pest;
    P=pest-pest*c'*inv(s)*c*pest;
    pest=a*P*a'+Q;
    xest=a*xhat;


%% 输出准备
position=[position;x(1)];
positionmeasure=[positionmeasure;z(1)];
positionhat=[positionhat;xhat(1)];
Innovation=[Innovation;Inn(1)];
Gaintk=[Gaintk;K(1)];
%% pp=[pp;P(1)];
end

%%输出
t=0:dt:duration;

figure(1)
plot(t,position,'r',t,positionmeasure,'b',t,positionhat,'c')
grid on
title('kalman')
ylabel('position(m)');
xlabel('time(sec)');

figure(2)
plot(t,Innovation,'b');
grid on
ylabel('Innovation(m)');
xlabel('Time(sec)');

figure(3)
plot(t,Gaintk)
grid on
ylabel('Gaintk');
xlabel('Time(sec)');



figure(4)
plot(t,position)
grid on
ylabel('True position trajectory (m)');
xlabel('Time(sec)');

figure(5)
plot(t,positionmeasure)
grid on
ylabel('Measured Position Trajectory (m)');
xlabel('Time(sec)');

figure(6)
plot(t,positionhat)
grid on
ylabel('Estimated Position Trajectory (m)');
xlabel('Time(sec)');

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -