📄 filter_result.asv
字号:
function [XER,YER]=filter_result(Ts,flag,mon,d)
% filter_result 对观测数据进行卡尔曼滤波,得到预测的航迹以及估计误差的均值和标准差
% Ts 采样时间,即雷达的工作周期
% mon 进行Monte-Carlo仿真的次数
% d 测量的误差,单位m
%返回值包括滤波预测后的估计航迹,以及均值和误差协方差
if nargin>4
error('Too many input arguments.');
end
% 产生理论的航迹
[N,x,y]=realTrack(flag,Ts);
for i=1:N
vx(i)=100*randn(1); % 观测噪声,两者独立
zx(i)=x(i)+vx(i); % 实际观测值
vy(i)=100*randn(1); % 观测噪声,两者独立
zy(i)=y(i)+vy(i);
end
randn('state',sum(100*clock)); % 设置随机数发生器
% 产生观测数据
for n=1:mon
% 用卡尔曼滤波得到估计的航迹
XE=Kalman_filter(Ts,0,N,zx,zy);
YE=Kalman_filter(Ts,1,N,zx,zy);
%误差矩阵
XER(1:N,n)=x(1:N)'-(XE(1:N))';
YER(1:N,n)=y(1:N)'-(YE(1:N))';
end
%滤波误差的均值
%滤波误差的标准差XSTD=std(XER,1,2); % 计算有偏的估计值,flag='1'YSTD=std(YER,1,2);
%作图
XERB=mean(XER,2);YERB=mean(YER,2);
figure(2);
plot(x,y,'g');hold on;
plot(XE,YE,'r');hold on;
plot(zx,zy,'y');
legend('理想轨迹','滤波轨迹');
figure(3)
plot(XERB);
grid on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -