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

📄 sourceradar.m

📁 扩展卡尔曼滤波 信息同步 数据融合算法实现
💻 M
字号:

%产生雷达数据,考虑异步,即被动雷达数据到达时间与融合时间之间不同
% 2003,6,16   秦玉亮
function [Z0,ZRadar,XTrue,totaltime,TRadar,Tao0_Radar,t_Radar]=sourceRadar;
TRadar=0.005;               %采样周期 1
totaltime=10;         %匀速运动阶段时间
Tao0_Radar=0.002;      %被动雷达第一个数据的延时
%初始距离r0,sita0,beta0
r0=12000;            %目标初始斜距
sita0=pi/4;          %初始方位角
beta0=10*pi/180;          %初始俯仰角

Xstart=r0*cos(beta0)*cos(sita0);       %目标起始X坐标
Ystart=r0*cos(beta0)*sin(sita0);      %目标起始Y坐标
Zstart=r0*sin(beta0);                %目标起始Z坐标

vx=-800;             %X方向速度
vy=-230;          %Y方向速度
vz=0;            %Z方向速度

%采样率为2HZ的雷达的初始误差
DeltaR=3000;               %观测距离误差标准差
DeltaSita=1*pi/180;    %观测方位角角度误差标准差    此例中方位角和俯仰角的标准差应相等
DeltaBeta=1*pi/180;    %观测俯仰角角度误差标准差   


DeltaSita_w=.2*pi/180;    %观测方位角角度误差标准差    此例中方位角和俯仰角的标准差应相等
DeltaBeta_w=.2*pi/180;    %观测俯仰角角度误差标准差   


q=0.01;                  % q是系统噪声标准差
Q=q^2*eye(3);              %系统各方向的状态噪声方差

%--------计算目标在雷达1(采样间隔为10HZ)中的真实轨迹,初始化XTrue1--------------------
times = totaltime/TRadar+1;          %采样点数

XTrue=zeros(6,1,times);
t_Radar=zeros(1,1,times);
%真实轨迹作直线运动
for i=1:times
    XTrue(:,:,i)=[Xstart + vx*((i-1)*TRadar+Tao0_Radar);
                      vx;
                  Ystart + vy*((i-1)*TRadar+Tao0_Radar);
                      vy;
                  Zstart + vz*((i-1)*TRadar+Tao0_Radar);
                      vz;];                 
    t_Radar(1,1,i)=(i-1)*TRadar+Tao0_Radar;
end;


%--------极坐标下的模拟观测值,观测噪声距离方向上标准差DeltaR米,角度方位差为DeltaSita,DeltaBeta----------
ZRadar=zeros(4,1,times);
for i=1:times

    
    azimuth=atan(XTrue(1,1,i)/XTrue(3,1,i))+randn(1)*DeltaSita;

     
    if azimuth>2*pi
        azimuth=azimuth-2*pi;
    else if azimuth < 0
            azimuth=azimuth+2*pi;
        end;
    end;
    %观测俯仰角度
    pitching=atan(XTrue(5,1,i)/(XTrue(1,1,i)^2+XTrue(3,1,i)^2)^0.5)+randn(1)*DeltaBeta;
    if pitching>pi/2
        pitching=pitching-pi;
    else if pitching<-pi/2
            pitching=pitching+pi;
        end;
    end;
    %观测方位角速度
    azimuth_w=(XTrue(3,1,i)*XTrue(2,1,i)-XTrue(1,1,i)*XTrue(4,1,i))/(XTrue(1,1,i)^2+XTrue(3,1,i)^2)  + randn(1)*DeltaSita_w;
    
    %观测俯仰角角速度
    R_Rs=(XTrue(1,1,i)^2+XTrue(3,1,i)^2)^0.5;
    R_R=(XTrue(1,1,i)^2+XTrue(3,1,i)^2+XTrue(5,1,i)^2)^0.5;
    R_V=( XTrue(1,1,i)*XTrue(2,1,i)+XTrue(3,1,i)*XTrue(4,1,i)+XTrue(5,1,i)*XTrue(6,1,i) )/R_R;
    
    pitching_w=( XTrue(6,1,i)*R_R-XTrue(5,1,i)*R_V)/(R_R*R_Rs)  + randn(1)*DeltaBeta_w;
    ZRadar(:,:,i)=[ azimuth;
              pitching;
              azimuth_w;
              pitching_w];
          
          

    
end;
%--------极坐标下的模拟观测值理想状态下的值----------
Z0=zeros(4,1,times);
for i=1:times

        
    azimuth=atan(XTrue(1,1,i)/XTrue(3,1,i));

   
    if azimuth>2*pi
        azimuth=azimuth-2*pi;
    else if azimuth < 0
            azimuth=azimuth+2*pi;
        end;
    end;
    %观测俯仰角度
    pitching=atan(XTrue(5,1,i)/(XTrue(1,1,i)^2+XTrue(3,1,i)^2)^0.5);
    if pitching>pi/2
        pitching=pitching-pi;
    else if pitching<-pi/2
            pitching=pitching+pi;
        end;
    end;
    %观测方位角速度
    azimuth_w=(XTrue(3,1,i)*XTrue(2,1,i)-XTrue(1,1,i)*XTrue(4,1,i))/(XTrue(1,1,i)^2+XTrue(3,1,i)^2)  ;
    
    %观测俯仰角角速度
    R_Rs=(XTrue(1,1,i)^2+XTrue(3,1,i)^2)^0.5;
    R_R=(XTrue(1,1,i)^2+XTrue(3,1,i)^2+XTrue(5,1,i)^2)^0.5;
    R_V=( XTrue(1,1,i)*XTrue(2,1,i)+XTrue(3,1,i)*XTrue(4,1,i)+XTrue(5,1,i)*XTrue(6,1,i) )/R_R;
    
    pitching_w=( XTrue(6,1,i)*R_R-XTrue(5,1,i)*R_V )/(R_R*R_Rs) ;
    
    Z0(:,:,i)=[azimuth;
              pitching;
              azimuth_w;
              pitching_w];

    
end;

⌨️ 快捷键说明

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