精度因子(DOP)推导与计算
前言
在前文空间四点定位原理与实现中介绍了通过距离来定位的原理和相关的一些应用。本文进一步研究对定位精度产生影响的因素。
一、精度因子(DOP)是什么?
在通过测定多个已知点到待定位点距离的方式来进行定位的方法中,有很多因素会对测距结果产生影响,进而影响定位精度,几何因子就是这个误差传递过程的量化,即衡量将距离误差转移到定位误差的程度。如根据已知点的阵型(几何布局)可以定义几何精度因子(GDOP),根据时间误差可以定义时间精度因子(TDOP)等。
二、精度因子推导
1.精度因子
假设空间中已知几点坐标为
(
x
i
,
y
i
)
,
i
=
1
,
2
,
3...
(x_{i},y_{i}),i=1,2,3...
(xi,yi),i=1,2,3...,一待定位点P坐标为
(
x
,
y
)
(x,y)
(x,y),根据距离公式,它们之间的真实几何距离为
r
i
r_i
ri,这里假设是在同步条件下进行的,也就是无钟差存在(非同步条件下只需将钟差写在等式右边作为一个变量即可,推导过程相似),根据距离公式,可以得到一个如下的方程组:
r
i
=
(
x
i
−
x
)
2
+
(
y
i
−
y
)
2
+
(
z
i
−
z
)
2
=
f
(
x
,
y
,
z
)
{{r}_{i}}=\sqrt{{{({{x}_{i}}-x)}^{2}}+{{({{y}_{i}}-y)}^{2}}+{{({{z}_{i}}-z)}^{2}}} =f(x,y,z)
ri=(xi−x)2+(yi−y)2+(zi−z)2=f(x,y,z)
设
p
′
(
x
^
,
y
^
,
z
^
)
p^{'}(\hat{x},\hat{y},\hat{z})
p′(x^,y^,z^)是通过定位算法解算出的大致位置,它与真实位置
(
x
,
y
,
z
)
(x,y,z)
(x,y,z)之间有如下关系:
{
x
=
x
^
+
Δ
x
y
=
y
^
+
Δ
y
z
=
z
^
+
Δ
z
\begin{cases} x=\hat{x}+\Delta x \\ y=\hat{y}+\Delta y \\ z=\hat{z}+\Delta z \\ \end{cases}
⎩
⎨
⎧x=x^+Δxy=y^+Δyz=z^+Δz
于是有:
f
(
x
,
y
,
z
)
=
f
(
x
^
+
Δ
x
,
y
^
+
Δ
y
,
z
^
+
Δ
z
)
f(x,y,z)=f(\hat{x}+\Delta x,\hat{y}+\Delta y,\hat{z}+\Delta z)
f(x,y,z)=f(x^+Δx,y^+Δy,z^+Δz)
将其在
(
x
^
,
y
^
,
z
^
)
(\hat{x},\hat{y},\hat{z})
(x^,y^,z^)处进行泰勒展开得到:
f
(
x
,
y
,
z
)
=
f
(
x
^
,
y
^
,
z
^
)
+
∂
f
∂
x
∣
p
′
Δ
x
+
∂
f
∂
y
∣
p
′
Δ
y
+
∂
f
∂
z
∣
p
′
f(x,y,z)= f(\hat{x},\hat{y},\hat{z})+{{\left. \frac{\partial f}{\partial x} \right|}_{{{p}'}}}\Delta x+{{\left. \frac{\partial f}{\partial y} \right|}_{{{p}'}}}\Delta y+{{\left. \frac{\partial f}{\partial z} \right|}_{{{p}'}}}
f(x,y,z)=f(x^,y^,z^)+∂x∂f
p′Δx+∂y∂f
p′Δy+∂z∂f
p′
其中在
p
′
p^{'}
p′处的偏导数为:
∂
f
∂
x
∣
p
′
=
−
(
x
i
−
x
^
)
(
x
i
−
x
^
)
2
+
(
y
i
−
y
^
)
2
+
(
z
i
−
z
^
)
2
=
−
(
x
i
−
x
^
)
r
^
i
{{\left. \frac{\partial f}{\partial x} \right|}_{{{p}'}}}=\frac{-({{x}_{i}}-\hat{x})}{\sqrt{{{({{x}_{i}}-\hat{x})}^{2}}+{{({{y}_{i}}-\hat{y})}^{2}}+{{({{z}_{i}}-\hat{z})}^{2}}}} =\frac{-({{x}_{i}}-\hat{x})}{{{{\hat{r}}}_{i}}}
∂x∂f
p′=(xi−x^)2+(yi−y^)2+(zi−z^)2−(xi−x^)=r^i−(xi−x^)
令
(
x
i
−
x
^
)
r
^
i
=
a
x
i
\frac{({{x}_{i}}-\hat{x})}{{{{\hat{r}}}_{i}}}={{a}_{xi}}
r^i(xi−x^)=axi,其几何意义表示大致坐标相对于已知点
i
i
i的方向余弦,相似地定义
a
y
i
,
a
z
i
a_{yi},a_{zi}
ayi,azi,这样一来上式可以整理成:
r
i
=
r
^
i
−
a
x
i
Δ
x
−
a
y
i
Δ
y
−
a
z
i
Δ
z
{{r}_{i}}={{\hat{r}}_{i}}-{{a}_{xi}}\Delta x-{{a}_{yi}}\Delta y-{{a}_{zi}}\Delta z
ri=r^i−axiΔx−ayiΔy−aziΔz
令
Δ
r
i
=
r
^
i
−
r
i
\Delta {{r}_{i}}={{\hat{r}}_{i}}-{{r}_{i}}
Δri=r^i−ri,
Δ
r
i
=
a
x
i
Δ
x
+
a
y
i
Δ
y
+
a
z
i
Δ
z
\Delta {{r}_{i}}={{a}_{xi}}\Delta x+{{a}_{yi}}\Delta y+{{a}_{zi}}\Delta z
Δri=axiΔx+ayiΔy+aziΔz
在有多个(大于等于4个)已知点的情况下,写成方程组形式如下:
{
Δ
r
1
=
a
x
1
Δ
x
+
a
y
1
Δ
y
+
a
z
1
Δ
z
Δ
r
2
=
a
x
2
Δ
x
+
a
y
2
Δ
y
+
a
z
2
Δ
z
Δ
r
3
=
a
x
3
Δ
x
+
a
y
3
Δ
y
+
a
z
3
Δ
z
.
.
.
Δ
r
n
=
a
x
n
Δ
x
+
a
y
n
Δ
y
+
a
z
n
Δ
z
\begin{cases} \Delta {{r}_{1}}={{a}_{x1}}\Delta x+{{a}_{y1}}\Delta y+{{a}_{z1}}\Delta z \\ \Delta {{r}_{2}}={{a}_{x2}}\Delta x+{{a}_{y2}}\Delta y+{{a}_{z2}}\Delta z \\ \Delta {{r}_{3}}={{a}_{x3}}\Delta x+{{a}_{y3}}\Delta y+{{a}_{z3}}\Delta z \\ ...\\ \Delta {{r}_{n}}={{a}_{xn}}\Delta x+{{a}_{yn}}\Delta y+{{a}_{zn}}\Delta z \\ \end{cases}
⎩
⎨
⎧Δr1=ax1Δx+ay1Δy+az1ΔzΔr2=ax2Δx+ay2Δy+az2ΔzΔr3=ax3Δx+ay3Δy+az3Δz...Δrn=axnΔx+aynΔy+aznΔz
写成矩阵形式:
Δ
r
=
H
Δ
x
\Delta \mathbf{r}=\mathbf{H}\Delta \mathbf{x}
Δr=HΔx
由于
H
\mathbf{H}
H不是方阵,无法求逆,作以下变换:
H
T
Δ
r
=
H
T
H
Δ
x
{{\mathbf{H}}^{T}}\Delta \mathbf{r}={{\mathbf{H}}^{T}}\mathbf{H}\Delta \mathbf{x}
HTΔr=HTHΔx
Δ
x
=
(
H
T
H
)
−
1
H
T
Δ
r
\Delta \mathbf{x}={{({{\mathbf{H}}^{T}}\mathbf{H})}^{-1}}{{\mathbf{H}}^{T}}\Delta \mathbf{r}
Δx=(HTH)−1HTΔr
换一种写法:
δ
x
=
(
H
T
H
)
−
1
H
T
δ
r
\delta \mathbf{x}={{({{\mathbf{H}}^{T}}\mathbf{H})}^{-1}}{{\mathbf{H}}^{T}}\delta \mathbf{r}
δx=(HTH)−1HTδr
考虑其协方差矩阵:
cov
(
δ
x
)
=
E(
δ
x
δ
x
T
)
\operatorname{cov}(\delta \mathbf{x})=\text{E(}\delta \mathbf{x}\delta {{\mathbf{x}}^{T}}\text{)}
cov(δx)=E(δxδxT)
带入式子得到:
cov
(
δ
x
)
=
E
[
(
H
T
H
)
−
1
H
T
δ
r
δ
r
T
H
(
H
T
H
)
−
T
]
=
(
H
T
H
)
−
1
H
T
E
(
δ
r
δ
r
T
)
H
(
H
T
H
)
−
T
\operatorname{cov}(\delta \mathbf{x})=\text{E }\!\![\!\!\text{ }{{({{\mathbf{H}}^{T}}\mathbf{H})}^{-1}}{{\mathbf{H}}^{T}}\delta \mathbf{r}\delta {{\mathbf{r}}^{T}}\mathbf{H}{{({{\mathbf{H}}^{T}}\mathbf{H})}^{-T}}\text{ }\!\!]\!\!\text{ } \\ \text{=}{{({{\mathbf{H}}^{T}}\mathbf{H})}^{-1}}{{\mathbf{H}}^{T}}\text{E}(\delta \mathbf{r}\delta {{\mathbf{r}}^{T}})\mathbf{H}{{({{\mathbf{H}}^{T}}\mathbf{H})}^{-T}} \\
cov(δx)=E [ (HTH)−1HTδrδrTH(HTH)−T ] =(HTH)−1HTE(δrδrT)H(HTH)−T
E(
δ
r
δ
r
T
)
\text{E(}\delta \mathbf{r}\delta {{\mathbf{r}}^{T}}\text{)}
E(δrδrT)是
δ
r
\delta \mathbf{r}
δr的协方差,而
Δ
r
1
,
Δ
r
2
.
.
.
Δ
r
n
\Delta {{r}_{1}},\Delta {{r}_{2}}...\Delta {{r}_{n}}
Δr1,Δr2...Δrn之间可以看作是相互独立同分布的,设它们的方差均为
σ
s
2
{{\sigma }_{s}}^{2}
σs2,于是有
E
(
δ
r
δ
r
T
)
=
σ
s
2
E
n
\text{E}(\delta \mathbf{r}\delta {{\mathbf{r}}^{T}})=\sigma _{s}^{2}{{\mathbf{E}}_{n}}
E(δrδrT)=σs2En
故有
cov
(
δ
x
)
=
σ
s
2
(
H
T
H
)
−
1
\operatorname{cov}(\delta \mathbf{x})=\sigma _{s}^{2}{{({{\mathbf{H}}^{T}}\mathbf{H})}^{-1}}
cov(δx)=σs2(HTH)−1
令
G
=
(
H
T
H
)
−
1
=
[
G
x
x
G
x
y
G
x
z
G
y
x
G
y
y
G
y
z
G
z
x
G
z
y
G
z
z
]
\mathbf{G}={{({{\mathbf{H}}^{T}}\mathbf{H})}^{-1}}=\left[ \begin{matrix} {{G}_{xx}} & {{G}_{xy}} & {{G}_{xz}} \\ {{G}_{yx}} & {{G}_{yy}} & {{G}_{yz}} \\ {{G}_{zx}} & {{G}_{zy}} & {{G}_{zz}} \\ \end{matrix} \right]
G=(HTH)−1=
GxxGyxGzxGxyGyyGzyGxzGyzGzz
于是
cov
(
δ
x
)
=
σ
s
2
[
G
x
x
G
x
y
G
x
z
G
y
x
G
y
y
G
y
z
G
z
x
G
z
y
G
z
z
]
=
[
σ
x
x
2
σ
x
y
2
σ
x
z
2
σ
y
x
2
σ
y
y
2
σ
y
z
2
σ
z
x
2
σ
z
y
2
σ
z
z
2
]
\operatorname{cov}(\delta \mathbf{x})=\sigma _{s}^{2}\left[ \begin{matrix} {{G}_{xx}} & {{G}_{xy}} & {{G}_{xz}} \\ {{G}_{yx}} & {{G}_{yy}} & {{G}_{yz}} \\ {{G}_{zx}} & {{G}_{zy}} & {{G}_{zz}} \\ \end{matrix} \right] \\ =\left[ \begin{matrix} \sigma _{xx}^{2} & \sigma _{xy}^{2} & \sigma _{xz}^{2} \\ \sigma _{yx}^{2} & \sigma _{yy}^{2} & \sigma _{yz}^{2} \\ \sigma _{zx}^{2} & \sigma _{zy}^{2} & \sigma _{zz}^{2} \\ \end{matrix} \right] \\
cov(δx)=σs2
GxxGyxGzxGxyGyyGzyGxzGyzGzz
=
σxx2σyx2σzx2σxy2σyy2σzy2σxz2σyz2σzz2
由此可以定义已知点阵的几何精度因子:
σ
s
2
(
G
x
x
+
G
y
y
+
G
z
z
)
=
σ
x
x
2
+
σ
y
y
2
+
σ
z
z
2
\sigma _{s}^{2}({{G}_{xx}}+{{G}_{yy}}+{{G}_{zz}})=\sigma _{xx}^{2}+\sigma _{yy}^{2}+\sigma _{zz}^{2}
σs2(Gxx+Gyy+Gzz)=σxx2+σyy2+σzz2位置精度因子
PDOP=
G
x
x
+
G
y
y
+
G
z
z
=
σ
x
x
2
+
σ
y
y
2
+
σ
z
z
2
σ
s
\text{PDOP=}\sqrt{{{G}_{xx}}+{{G}_{yy}}+{{G}_{zz}}} \\ =\frac{\sqrt{\sigma _{xx}^{2}+\sigma _{yy}^{2}+\sigma _{zz}^{2}}}{{{\sigma }_{s}}} \\
PDOP=Gxx+Gyy+Gzz=σsσxx2+σyy2+σzz2水平精度因子
HDOP=
G
x
x
+
G
y
y
\text{HDOP=}\sqrt{{{G}_{xx}}+{{G}_{yy}}}
HDOP=Gxx+Gyy
垂直精度因子
VDOP
=
G
z
z
\text{VDOP}=\sqrt{G_{zz}}
VDOP=Gzz
三、matlab仿真
推导出精度因子后,就可以根据实际应用对其进行仿真。精度因子用在很多方面,只要是原理相似的地方都可以进行应用,包括卫星定位,水下定位等等。为了方便,假设在水面浮标型长基线定位系统中进行仿真,分别对三元阵和四元阵DOP表现进行研究。
与其它定位方式不一样的是,水面浮标在高度(深度)上可以近似看作一致的,并且水下目标的深度测量可以由压力计等其它方式获得,因此只对其HDOP值分布进行仿真分析。
1.三元阵仿真
采用以下的代码对等边三角和等腰直角三角阵型的DOP值表现进行计算。
clear all
disp('Three points Mesurement in 3d space.')
% x = [0,2000,0];
% y = [0,0,2000];
% z = [2000,2000,2000];
%等边三角形
a = 4000;%基线长
x = [4000-a/2,4000+a/2,4000];%以(4000,4000,2000)为中心
y = [4000-sqrt(3)/6*a,4000-sqrt(3)/6*a,4000+sqrt(3)/3*a];
% %等腰直角
% a = 4000;%基线长
% x = [2000,a+2000,2000];%以(4000,4000,2000)为中心
% y = [2000,2000,a+2000];
%一字(不可用)
% a = 4000;%基线长
% x = [4000-a,4000,4000+a];%以(4000,4000,2000)为中心
% y = [4000,4000,4000];
z = [2000,2000,2000];
figure(1);
figure('Name','三元阵定位图','NumberTitle','off');
plot(x,y,'r*');
title('Three points positioning.');
xlabel('x坐标/m');
ylabel('y坐标/m');
zlabel('z坐标/m');
axis([0,8000,0,8000]);
hold on
target = [1500,1500];
% x0=target(1)*ones(1,100);
x0=linspace(0,8000,1000);
% y0=target(2)*ones(1,100);
y0=linspace(0,8000,1000);
z0=1000*ones(1,100);
%plot3(x0,y0,z0,'k:o');
distance=zeros(1,3,10000);
% distance_fake=zeros(1,3,10000);
% for j=1:3
% for p=1:100
% for q=1:100
% distance(1,j,100*(p-1)+q)=sqrt((x0(p)-x(j))^2+(y0(q)-y(j))^2+(z0(1)-z(j))^2);
% end
% end
% end
% random_error=rand(1,3,10000)-0.5;
% bias_error = 0.001*distance;
% distance=distance-distance.*(random_error/20) + bias_error; %误差控制?
A = zeros(2,2,10000);
b = zeros(2,1,10000);
c = zeros(2,1,10000);
H = zeros(3,2,10000);
HDOP =zeros(100,100);
h=zeros(3,2);
for xx=1:1:length(x0)
for yy=1:1:length(y0)
% A(:,:,100*(xx-1)+yy) = 2*([x(2)-x(1),y(2)-y(1);
% x(3)-x(2),y(3)-y(2)]);
%
% A(:,:,100*(xx-1)+yy) = inv(A(:,:,100*(xx-1)+yy));
%
% b(:,:,100*(xx-1)+yy) = [distance(1,1,100*(xx-1)+yy)^2-distance(1,2,100*(xx-1)+yy)^2+x(2)^2-x(1)^2+y(2)^2-y(1)^2+z(2)^2-z(1)^2-2*(z(2)-z(1))*z(3);
% distance(1,2,100*(xx-1)+yy)^2-distance(1,3,100*(xx-1)+yy)^2+x(3)^2-x(2)^2+y(3)^2-y(2)^2+z(3)^2-z(2)^2-2*(z(3)-z(2))*z(3)];
%
% c(:,:,100*(xx-1)+yy) = A(:,:,100*(xx-1)+yy)*b(:,:,100*(xx-1)+yy);%实际坐标
%算DOP值
for m=1:3
r=sqrt((x0(xx)-x(m))^2+(y0(yy)-y(m))^2+(z0(1)-z(m))^2);%解算位置与三个信标之间的距离
%r=sqrt((x0(xx)-x(m))^2+(y0(yy)-y(m))^2);%解算位置与三个信标之间的距离
h(m,1)=(x(m)-x0(xx))/r;
h(m,2)=(y(m)-y0(yy))/r;
h(m,3)=(z(m)-z0(1))/r;
end
% H(:,:,100*(xx-1)+yy)=[(x(1)-c(1,1,100*(xx-1)+yy))/distance(1,1,100*(xx-1)+yy),(y(1)-c(2,1,100*(xx-1)+yy))/distance(1,1,100*(xx-1)+yy);
% (x(2)-c(1,1,100*(xx-1)+yy))/distance(1,2,100*(xx-1)+yy),(y(2)-c(2,1,100*(xx-1)+yy))/distance(1,2,100*(xx-1)+yy);
% (x(3)-c(1,1,100*(xx-1)+yy))/distance(1,3,100*(xx-1)+yy),(y(3)-c(2,1,100*(xx-1)+yy))/distance(1,3,100*(xx-1)+yy)];
% H(:,:,100*(xx-1)+yy)=[(x(1)-x0(xx))/distance(1,1,100*(xx-1)+yy),(y(1)-y0(yy))/distance(1,1,100*(xx-1)+yy);
% (x(2)-x0(xx))/distance(1,2,100*(xx-1)+yy),(y(2)-y0(yy))/distance(1,2,100*(xx-1)+yy);
% (x(3)-x0(xx))/distance(1,3,100*(xx-1)+yy),(y(3)-y0(yy))/distance(1,3,100*(xx-1)+yy)];
%
G = inv(h'*h);
%G = inv(H(:,:,100*(xx-1)+yy)'*H(:,:,100*(xx-1)+yy));
HDOP(xx,yy) = sqrt((G(1,1)+G(2,2)));
%plot3(c(1,1,h),c(2,1,h),z0(1,h),'color',[rand rand rand],'Marker','+');
%grid on;
end
end
%画dop值
figure(1);
%figure('Name','DOP','NumberTitle','off');
mean_DOP=mean(HDOP,2)*ones(1,100);
%plot([1:100],GDOP,[1:100],mean_DOP);
pcolor(linspace(0,8000,1000),linspace(0,8000,1000),HDOP);
xlabel('x坐标/m');ylabel('y坐标/m');
shading interp;
colorbar;colormap('jet');
hold on;
plot(x,y,'r*');
title('DOP Value');
可见在阵型的内部DOP值最小,也即定位精度应在同等条件下更高。
2.四元阵仿真
同样地对四元阵阵型DOP值表现进行计算。
clear all
disp('Three points Measurement in 3d space.')
% x = [0,2000,0];
% y = [0,0,2000];
% z = [2000,2000,2000];
%正方形
a = 4000;%基线长
x = [2000,2000+a,2000+a,2000];%以(4000,4000,2000)为中心
y = [2000,2000,2000+a,2000+a];
% %等腰直角
% a = 4000;%基线长
% x = [2000,a+2000,2000];%以(4000,4000,2000)为中心
% y = [2000,2000,a+2000];
%一字
% a = 4000;%基线长
% x = [4000-a,4000,4000+a];%以(4000,4000,2000)为中心
% y = [4000,4000,4000];
z = [2000,2000,2000,2000];
figure(1);
figure('Name','三元阵定位图','NumberTitle','off');
plot(x,y,'r*');
title('Three points positioning.');
xlabel('x坐标/m');
ylabel('y坐标/m');
zlabel('z坐标/m');
axis([0,8000,0,8000]);
hold on
target = [1500,1500];
% x0=target(1)*ones(1,100);
x0=linspace(0,8000,1000);
% y0=target(2)*ones(1,100);
y0=linspace(0,8000,1000);
z0=1000*ones(1,100);
%plot3(x0,y0,z0,'k:o');
distance=zeros(1,3,10000);
% distance_fake=zeros(1,3,10000);
% for j=1:3
% for p=1:100
% for q=1:100
% distance(1,j,100*(p-1)+q)=sqrt((x0(p)-x(j))^2+(y0(q)-y(j))^2+(z0(1)-z(j))^2);
% end
% end
% end
% random_error=rand(1,3,10000)-0.5;
% bias_error = 0.001*distance;
% distance=distance-distance.*(random_error/20) + bias_error; %误差控制?
A = zeros(2,2,10000);
b = zeros(2,1,10000);
c = zeros(2,1,10000);
H = zeros(3,2,10000);
HDOP =zeros(100,100);
h=zeros(3,2);
for xx=1:1:length(x0)
for yy=1:1:length(y0)
% A(:,:,100*(xx-1)+yy) = 2*([x(2)-x(1),y(2)-y(1);
% x(3)-x(2),y(3)-y(2)]);
%
% A(:,:,100*(xx-1)+yy) = inv(A(:,:,100*(xx-1)+yy));
%
% b(:,:,100*(xx-1)+yy) = [distance(1,1,100*(xx-1)+yy)^2-distance(1,2,100*(xx-1)+yy)^2+x(2)^2-x(1)^2+y(2)^2-y(1)^2+z(2)^2-z(1)^2-2*(z(2)-z(1))*z(3);
% distance(1,2,100*(xx-1)+yy)^2-distance(1,3,100*(xx-1)+yy)^2+x(3)^2-x(2)^2+y(3)^2-y(2)^2+z(3)^2-z(2)^2-2*(z(3)-z(2))*z(3)];
%
% c(:,:,100*(xx-1)+yy) = A(:,:,100*(xx-1)+yy)*b(:,:,100*(xx-1)+yy);%实际坐标
%算DOP值
for m=1:4
r=sqrt((x0(xx)-x(m))^2+(y0(yy)-y(m))^2+(z0(1)-z(m))^2);%解算位置与三个信标之间的距离
%r=sqrt((x0(xx)-x(m))^2+(y0(yy)-y(m))^2);%解算位置与三个信标之间的距离
h(m,1)=(x(m)-x0(xx))/r;
h(m,2)=(y(m)-y0(yy))/r;
h(m,3)=(z(m)-z0(1))/r;
end
% H(:,:,100*(xx-1)+yy)=[(x(1)-c(1,1,100*(xx-1)+yy))/distance(1,1,100*(xx-1)+yy),(y(1)-c(2,1,100*(xx-1)+yy))/distance(1,1,100*(xx-1)+yy);
% (x(2)-c(1,1,100*(xx-1)+yy))/distance(1,2,100*(xx-1)+yy),(y(2)-c(2,1,100*(xx-1)+yy))/distance(1,2,100*(xx-1)+yy);
% (x(3)-c(1,1,100*(xx-1)+yy))/distance(1,3,100*(xx-1)+yy),(y(3)-c(2,1,100*(xx-1)+yy))/distance(1,3,100*(xx-1)+yy)];
% H(:,:,100*(xx-1)+yy)=[(x(1)-x0(xx))/distance(1,1,100*(xx-1)+yy),(y(1)-y0(yy))/distance(1,1,100*(xx-1)+yy);
% (x(2)-x0(xx))/distance(1,2,100*(xx-1)+yy),(y(2)-y0(yy))/distance(1,2,100*(xx-1)+yy);
% (x(3)-x0(xx))/distance(1,3,100*(xx-1)+yy),(y(3)-y0(yy))/distance(1,3,100*(xx-1)+yy)];
%
G = inv(h'*h);
%G = inv(H(:,:,100*(xx-1)+yy)'*H(:,:,100*(xx-1)+yy));
HDOP(xx,yy) = sqrt((G(1,1)+G(2,2)));
%plot3(c(1,1,h),c(2,1,h),z0(1,h),'color',[rand rand rand],'Marker','+');
%grid on;
end
end
%画dop值
figure(1);
%figure('Name','DOP','NumberTitle','off');
mean_DOP=mean(HDOP,2)*ones(1,100);
%plot([1:100],GDOP,[1:100],mean_DOP);
pcolor(linspace(0,8000,1000),linspace(0,8000,1000),HDOP);
xlabel('x坐标/m');ylabel('y坐标/m');
shading interp;
colorbar;colormap('jet');
hold on;
plot(x,y,'r*');
title('HDOP Value');
总结
文章主要对同步条件下精度因子进行了推导,并在平面阵条件下对三元阵和四元阵的HDOP值表现进行了仿真。