📄 adpmov.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 + -