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

📄 filter_result.m

📁 this code is an example for kalman filter
💻 M
字号:
function [XER,YER]=filter_result(Ts,flag,mon,d)
% filter_result         对观测数据进行卡尔曼滤波,得到预测的航迹以及估计误差的均值和标准差
% Ts                    采样时间,即雷达的工作周期
% mon                   进行Monte-Carlo仿真的次数
% d                     测量的误差
%flag                  选择轨迹号有0,1,2,3四条理论轨迹。
%返回值包括滤波预测后的估计航迹,以及均值和误差协方差

if nargin>4
    error('Too many input arguments.');
end


% 产生理论的航迹
[N,x,y]=realTrack(flag,Ts);

for i=1:N
   vx(i)=d*randn(1); % 观测噪声,两者独立
   zx(i)=x(i)+vx(i); % 实际观测值
   vy(i)=d*randn(1); % 观测噪声,两者独立
   zy(i)=y(i)+vy(i); 
   
end

randn('state',sum(100*clock)); % 设置随机数发生器

% 产生观测数据
for n=1:mon
    % 用卡尔曼滤波得到估计的航迹
    %XE1=Kalman_filter( d,0,zx,zy,N);
    %YE1=Kalman_filter(d,1,zx,zy,N);
    XE=currentmodel(Ts,0,N,zx,zy,d); 
   YE=currentmodel(Ts,1,N,zx,zy,d);
    %误差矩阵
   XER(1:N,n)=x(1:N)'-(XE(1:N))';
   YER(1:N,n)=y(1:N)'-(YE(1:N))';
      %  XER1(1:N,n)=x(1:N)'-(XE1(1:N))';
    %YER1(1:N,n)=y(1:N)'-(YE1(1:N))';
end



%滤波误差的均值

%滤波误差的标准差XSTD=std(XER,1,2); % 计算有偏的估计值,flag='1'YSTD=std(YER,1,2);

%作图
%XERB=mean(XER,2);YERB=mean(YER,2);
%XERB1=mean(XER1,2);YERB1=mean(YER1,2);
figure(2);
plot(x,y,'r',zx,zy,'b');hold on;
plot(XE,YE,'g');hold on;
%plot(XE1,YE1,'g');


legend('理想轨迹','滤波轨迹');
figure(3)
%plot(XERB);
%figure(4);
%plot(XERB1,'g');
%grid on;




⌨️ 快捷键说明

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