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); %经验正程序正确