gusucode.com > 扩展卡尔曼滤波,粒子滤波,去偏卡尔曼滤波和循环增益尔曼滤波的源程序 > 循环增益卡尔曼滤波/new_data_get.m

    function [real_data,view_data,real_v,Q1]=new_data_get(object_init_state,N,T,l)
squre_view_err_r=20;
squre_view_err_thita=0.8*pi/180;
ch=[1 T 0 0;0 1 0 0;0 0 1 T;0 0 0 1];
circle=2;
w=[0.1*randn(1,N);0.1*randn(1,N)];                         %  产生的机动误差一定要是零均值才会符合卡尔曼滤波的特性
a1=0.3;
a=[a1*ones(1,N);zeros(1,N)];
%w=zeros(2,N);
%产生三条轨迹,情况1产生一条没有机动噪声的轨迹,情况2产生一条有机动噪声的轨迹,情况3产生一条有机动的轨迹,机动从30——80,机动为1
switch circle
    case 1  
          [real_xy,r,thita]=no_noise(ch,object_init_state,N);
          Q1=[0 0;0 0];
    case 2
          [real_xy,r,thita]=noise(ch,object_init_state,N,l,w); 
          Q1=[0.01 0;0 0.01];
    case 3
          [real_xy,r,thita]=power_noise(ch,object_init_state,N,l,w,a);
          Q1=[0.01 0;0 0.01];
end
 
real_v=[real_xy(2,:);real_xy(4,:)];
view_err_r=squre_view_err_r*randn(1,N);
view_err_thita=squre_view_err_thita*randn(1,N);
point_view_err=[view_err_r;view_err_thita];
point_real_data=[r;thita];
point_view_data=point_view_err+point_real_data;
real_data=zuobiao_transform(point_real_data);
view_data=zuobiao_transform(point_view_data);
%经验正程序正确