资源简介
用于计算双站测角交叉定位GDOP,包括数据推导过程、matlab程序、仿真结果
代码片段和文件信息
% 计算双站DOA交叉定位的GDOP
% 修改日期:2017.03.19
% 创建程序
% 修改日期:2017.03.20
% 并行改串行(并行的有问题)
clear all; close all; clc;
ang_std = 0.01*pi/180;
d = 8; % m
stations = [-d/20;d/20];
X = -200:1:200; % km
Y = 50:300;
%% GDOP图
for i = 1:length(X)
for j = 1:length(Y)
[a1a2] = ang_cal([X(i)Y(j)]*1e3stations);
G(ij) = GDOP_ang(a1a2dang_std)/1e3; % km
end
end
figure;
mesh(XYG‘);hold on;grid on;
plot3(stations(:1)stations(:2)[00]‘o‘‘Linewidth‘1.5);
xlabel(‘x(km)‘);ylabel(‘y(km)‘);zlabel(‘z(km)‘);
figure;
[Ch] = contour(XYG‘);hold on; grid on;
clabel(Ch);
plot(stations(:1)stations(:2)‘o‘);
xlabel(‘x(km)‘);ylabel(‘y(km)‘);
title(‘基线长度8m,测角误差0.01度‘);
axis equal;
axis tight;
%% 基线长度、距离-定位误差
ds = 1:0.5:6; % km
ranges = [200300400]; % km
for a = 1:length(ranges)
range = ranges(a);
for k = 1:length(ds)
d = ds(k); % km
X1 = d/2;
Y1 = sqrt(range^2-X1^2);
stations1 = [00;d0];
[a1a2] = ang_cal([X1Y1]*1e3stations1*1e3);
G1(k) = GDOP_ang(a1a2d*1e3ang_std)/1e3; % km
% G1(k) = GDOP_ang2([X1Y1]*1e3d*1e3ang_std)/1e3;
end
figure(3);
plot(dsG1‘-o‘‘Linewidth‘1.5);grid on; hold on;
xlabel(‘基线长度(km)‘);ylabel(‘定位误差(km)‘);
title(‘测角误差0.01度‘);
end
legend(‘R=200km‘‘R=300km‘‘R=400km‘);
for a = 1:length(ranges)
range = ranges(a);
plot(dsrange*0.03*ones(1length(ds))‘--k‘);
text(1.2range*0.03+1[‘3%(R=‘num2str(range)‘km)‘]);
end
%% 基线长度、测角误差-定位误差
range = 200; % km
ds = 10:10:100; % km
ang_stds = (0.1:0.1:0.5)*pi/180;
for a = 1:length(ang_stds)
ang_std = ang_stds(a);
for k = 1:length(ds)
d = ds(k); % km
X1 = d/2;
Y1 = sqrt(range^2-X1^2);
stations1 = [00;d0];
[a1a2] = ang_cal([X1Y1]*1e3stations1*1e3);
G2(k) = GDOP_ang(a1a2d*1e3ang_std)/1e3; % km
end
figure(4);
semilogy(dsG2‘-o‘‘Linewidth‘1.5);grid on; hold on;
xlabel(‘基线长度(km)‘);ylabel(‘定位误差(km)‘);
title(‘目标距离200km‘);
end
legend(‘\sigma_{\theta}=0.1deg‘‘\sigma_{\theta}=0.2deg‘‘\sigma_{\theta}=0.3deg‘‘\sigma_{\theta}=0.4deg‘‘\sigma_{\theta}=0.5deg‘);
plot(dsrange*0.03*ones(1length(ds))‘--k‘);
text(12range*0.03-1[‘3%(R=‘num2str(range)‘km)‘]);
function [ang1ang2] = ang_cal(posstations)
ang1 = atan2(pos(2)-stations(12)pos(1)-stations(11));
ang2 = atan2(pos(2)-stations(22)pos(1)-stations(21));
end
function [gdop] = GDOP_ang(ang1ang2dang_std)
J = zeros(2);
J(11) = d*tan(ang2)/(tan(ang2)-tan(ang1))^2/(cos(ang1))^2;
J(12) = d/(cos(ang2))^2/(tan(ang2)-tan(ang1)) - d*tan(ang2)/(cos(ang2))^2/(tan(ang2)-tan(ang1))^2;
J(21) = (d/(cos(ang1))^2*tan(ang2)*(tan(ang2)-tan(ang1)) + d*tan(ang1)*tan(ang2)/(cos(ang1))^2)/(tan(ang2)-tan(ang1))^2;
J(22) = (d*tan(ang1)/(cos(ang2))^2*(tan(ang2)-tan(ang1)) - d*tan(ang1)*tan(ang2)/(cos(ang2))^2)/(tan(ang2)-tan(ang1))^
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3423 2017-05-29 11:02 GDOP_of_AOA_2BS.m
文件 524633 2017-07-07 15:27 推导过程.pdf
评论
共有 条评论