📄 sourceradar.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 + -