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

📄 adpmov.m

📁 定位书籍配套使用源代码
💻 M
字号:
clear all
clc
N=70;
t=0:0.5:35-0.5;
T=0.5;
a=0; %加速度
v=0.1; %初速度
y=ones(1,N);
y(1)=0; %初始位置
for n=2:N;
    y(n)=y(1)+v*(n-1)*T+1/2*a*((n-1)*T)^2;
end
figure(1);
plot(t,y,'*');
xlabel('时间');
ylabel('位置');
title('理想运动时位置曲线');

% 加白噪声
a=3*randn(1,N);
s=y+a;
figure(2);
plot(t,s,'*');
xlabel('时间');
ylabel('位置');
title('加白噪声后的位置曲线');

Y=zeros(2,N);
Y(:,1)=[0;0.2;0.1];
A=[1 T;0 1];  
H=[1 0 ];
C0=[0 0;0 1];
C=[C0 zeros(2,2*N-1)];
B=[T 1]';
% B=[1 1 1]'
Q=(0.25)^2; 
R=(0.25)^2; 

% 卡尔曼算法

for n=1:N
    i=(n-1)*2+1;
    C(:,i:i+1)=A*C(:,i:i+1)*A'+B*Q*B';
    K=C(:,i:i+2)*H'*inv(H*C(:,i:i+2)*H'+R);
    C(:,i+3:i+5)=(eye(3)-K*H)*C(:,i:i+2);
    Y(:,n)=Y(:,n)+K*(s(:,n)-H*Y(:,n));
    Y(:,n+1)=A*Y(:,n); 
end

figure(3) %位置的跟踪曲线
for n=1:N
yp(n)=Y(1,n);
end
plot(t,yp,'*');
xlabel('时间');
ylabel('位置');
title('位置跟踪曲线');

figure(4) %速度的跟踪曲线
for n=1:N
yv(n)=Y(2,n);
end
plot(t,yv,'*');
xlabel('时间');
ylabel('速度');
title('速度跟踪曲线');

figure(5) %加速度的跟踪曲线
for n=1:N
ya(n)=Y(3,n);
end
plot(t,ya,'*');
xlabel('时间');
ylabel('加速度');
title('加速度跟踪曲线');

⌨️ 快捷键说明

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