基于某TDOA原理计算信号源位置的算法探讨文档格式.docx

上传人:b****4 文档编号:17681516 上传时间:2022-12-08 格式:DOCX 页数:13 大小:1.35MB
下载 相关 举报
基于某TDOA原理计算信号源位置的算法探讨文档格式.docx_第1页
第1页 / 共13页
基于某TDOA原理计算信号源位置的算法探讨文档格式.docx_第2页
第2页 / 共13页
基于某TDOA原理计算信号源位置的算法探讨文档格式.docx_第3页
第3页 / 共13页
基于某TDOA原理计算信号源位置的算法探讨文档格式.docx_第4页
第4页 / 共13页
基于某TDOA原理计算信号源位置的算法探讨文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于某TDOA原理计算信号源位置的算法探讨文档格式.docx

《基于某TDOA原理计算信号源位置的算法探讨文档格式.docx》由会员分享,可在线阅读,更多相关《基于某TDOA原理计算信号源位置的算法探讨文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

基于某TDOA原理计算信号源位置的算法探讨文档格式.docx

2、假设已通过相关算法得到了较为准确时间差,此时可以计算出未知信号源到达各个监测站的距离差;

3、假设地球是正球体;

4、假设未知信号源为全向发射;

图1

如图1示,当确定到达每两个监测站的距离差后就可以画出一对双曲线,同理可以画出3对双曲线,由于三对双曲线中任意两对都有共同的焦点,因此在平面必有交点。

一、关键问题分析

1、计算地球上任意两点间的距离

在直角坐标系中建立方程组并求解,不难求出若干条双曲线的交点,若采用此方法,实际应用中就会遇到经纬度信息与直角坐标的变换,而且整体过程对单位的控制不好把握,相对繁琐。

考虑到地球为近似球体,如果直接采用经纬度信息作为方程变量,则输出交点也为经纬度信息,也便于C语言实现,因此使用球坐标系建模计算比较可行。

地球是一个近乎标准的椭球体,其赤道半径为6,378.140km,极半径为6,356.755km,平均半径6,371.004km。

如果我们假设地球是一个完美的球体,那么其半径就是地球的平均半径,记为R,如图2示。

如果以0度经线为基准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,对于就方圆几十公里围的监测站使用,正球体计算带来的误差极小)。

图2

设第一点A的经纬度为(LonA,LatA),第二点B的经纬度为(LonB,LatB),按照0度经线的基准,东经取经度的正值(Longitude),西经取经度负值(-Longitude),北纬取90-纬度值(90-Latitude),南纬取90+纬度值(90+Latitude),则经过上述处理过后的两点被计为(MLonA,MLatA)和(MLonB,MLatB)。

那么根据三角推导,可以得到计算两点距离的如下公式:

(1)

(2)

注:

S的单位为度,Distance的单位为米,下文中A、B两点的Distance简写为DA-B。

2、求解双曲线交点

双曲线,即与平面上两个定点距离之差的绝对值为定值的点的轨迹。

对未知信号源的定位至少需要3个监测站,如果我们仅考虑3个站的情况,以任意两个监测站为交点可以画出1对双曲线,此时共有3对双曲线。

当3对双曲线中的任意3条相交时就是未知信号源可能存在的点。

由于6取3的组合有20种可能,且任意1对双曲线不可能与剩余4条中的1条共交一个点,所以3对双曲线其中3条相交于同一点的最大可能为20-4×

3=8个,因此在程序中需要8个数组存放可能存在的8组相互近似的交点。

利用程序解方程组时通常是设定一个极小值a,将方程化为F(x,y)=0形式,用点(x1,y1)不停地递增或递减一个步进值step,当代入该点的两个式子之差的绝对值小于极小值a时,便认为存在交点(x1,y1),将其统统存放于一个结果数组。

(3)

由于在程序中使用经纬度做变量进行计算,且以距离“米”为单位控制计算精度,因此在程序中需要有用经纬度来表示距离的对应关系。

我们知道在地球赤道附近经度每差1度,实际距离相隔约111km,即n=111000,当使用error/n表示步长step时,能使精度随纬度升高而提高。

当在每次计算中取极小值a为“error/n/3.3”时,整个计算的精度将控制在误差error以,error值由人为定值。

3、合并相似点

根据(3)式步进得到的点可能有很多,本文称这些点为相似点,其共有特征是都能使(3)式成立,为此,需要进一步甄别,依前述可知,3个站点至多可能有8个交点,于是应当根据某种算法把8组相互近似的交点区别清楚。

本文根据同组相似点应当相关性较大,反之即为差异性较小,于是令(Xi,Yi)表征结果数组中的元素,i为正整数。

依下述公式:

(4)

此时,以经纬度两点距离公式

(1)、

(2)进行计算,当两点间距离小于

时,可以默认为该点为同一个点的近似值,单位是米。

当(Xi,Yi)中有满足(4)式的点时,将其逐一分组,分别存放在8个数组中,然后根据(5)式对其求均值,以此值作为该组的代表点,最后可得至多8个交点。

(5)

二、仿真模型

1、常量定义如下:

常量名

数值

单位

说明

R

6371004

地球半径(近似球体)

n

111000

地球赤道上每一经度对应的距离

2、变量定义如下:

error

100

计算的误差精度,人工输入

d

20

公里

扫描区域边界拓展宽度,人工输入

step

error/n/3.3

定义了变量x、y的增量

x_n[]

待计算

存放可能存在的交点的纬度

y_n[]

存放可能存在的交点的经度

3、题设

a.地球是球形的,采用球坐标系建模,认为在方圆20公里近地面是平面;

b.三个监测站的经纬度分别为:

A(x1,y1),B(x2,y2),C(x3,y3);

c.r1、r2、r3为真假判决值,取1时表示条件成立;

d.s1_2、s1_3、s2_3分别为未知信号源任意两站点间的距离差,使用式

(1)、

(2)进行计算;

f.未知信源记为点O,未知信号源的纬度为x,经度为y;

g.O点信号到达A点与B点的时间差为TD1,距离差为SD1,O点信号到达B点与C点的时间差为TD2,距离差为SD2,O点信号到达A点与C点的时间差为TD3,距离差为SD3;

h.a=error/3,b=2*error;

三、算法设计

1、计算地球上任意两条双曲线的交点

在程序中如用变量“x”表示纬度,用“y”表示经度,“S”表示距离,则两点的距离差可以表示为(其中π/180≈1/57.2958),依式

(1)有:

S=fabs(R*acos(sin(x2/57.2958)*sin(x1/57.2958)+cos(x2/57.2958)*cos(x1/57.2958)*cos((y2-y1)/57.2958)).

求双曲线交点本文采用穷举法,以step为步进值,遍历可行域,该域在三站点经纬度的最值之左右上下各拓展d的矩形区域,在此域寻找符合判决条件的点,然后将这些点存于结果数组。

为保证下次判决有效,每次判决结束后都要对r值清零。

流程图如下:

计算双曲线交点的程序段:

if(fabs(fabs(R*acos(sin(x/57.2958)*sin(x1/57.2958)+cos(x/57.2958)*cos(x1/57.2958)*cos((y-y1)/57.2958))-fabs(R*acos(sin(x/57.2958)*sin(x2/57.2958)+cos(x/57.2958)*cos(x2/57.2958)*cos((y-y2)/57.2958))))-s1_2)<

(error/3))

r1=1;

if(fabs(fabs(R*acos(sin(x/57.2958)*sin(x1/57.2958)+cos(x/57.2958)*cos(x1/57.2958)*cos((y-y1)/57.2958))-fabs(R*acos(sin(x/57.2958)*sin(x3/57.2958)+cos(x/57.2958)*cos(x3/57.2958)*cos((y-y3)/57.2958))))-s1_3)<

r2=1;

if(fabs(fabs(R*acos(sin(x/57.2958)*sin(x2/57.2958)+cos(x/57.2958)*cos(x2/57.2958)*cos((y-y2)/57.2958))-fabs(R*acos(sin(x/57.2958)*sin(x3/57.2958)+cos(x/57.2958)*cos(x3/57.2958)*cos((y-y3)/57.2958))))-s2_3)<

r3=1;

if(r1&

&

r2&

r3)

{

r1=0;

r2=0;

r3=0;

//下一步执行语句

}

2、合并相似点程序段

按照(4)、(5)两式,进行程序设计,为保证(Xi,Yi)中所有元素都能被本组,需要附加一个if语句进行判断,若下一个待判决的元素任然存在,则将其附为下一组的首元素,然后继续执行判别语句,否则,则继续执行分组甄别的while循环语句,实际上此时后面的while语句都不执行了,而那最后一个元素也被分组了。

这样就防止出现最后一个元素被遗漏的情况发生。

程序段如下:

while(i>

=0&

fabs(R*acos(sin(x_i[i]/57.2958)*sin(x_i[i-1]/57.2958)+cos(x_i[i]/57.2958)*cos(x_i[i-1]/57.2958)*cos((y_i[i]-y_i[i-1])/57.2958)))<

2*error)//若相邻两点差值小于某值且数组存在元素,取出这些元素定为第一组相似点

{

x_1[i1]=x_i[i];

y_1[i1]=y_i[i];

i--;

i1+=1;

}

if(i>

=0)//若第一组元素取完后,x_i,y_i数组中仍有元素,继续执行以下代码

x_1[i1]=x_i[i];

i1+=1;

对数组中的元素求平均值,程序段如下:

doubleaverage(doublearray[],intm)//求数组平均值

intk;

doubleaver;

doublesum;

sum=array[0];

if(m>

0)

{

for(k=1;

k<

m;

k++)

sum=sum+array[k];

aver=sum/m;

}

else

aver=0;

return(aver);

四、验证仿真结果

选取地区的三个固定监测站

1、省监测中心站(24.9889102.6570)

2、五华山监测站(25.049358102.706879)

3、机场监测站(25.012774102.74032)

设未知信号源位置为(24.979197102.714763)

三个固定监测站点及“未知信号源”实际位置图3示:

图3

利用googleearth测距功能测出信号源与监测站的距离分别为:

s1=5933m;

s2=7838m;

s3=4532m;

s1_2=1905m;

s1_3=1401m

s2_3=3306m

将以上变量输入程序,取error为100米,扫描半径为20公里,运行程序,输出见图4:

图4

从输出可知,在方圆约20公里的围,共存在两个三线相交点,分别为:

计算信号源位置1(24.979363102.714758)

计算信号源位置2(25.033645102.677175)

在实际操作中可以根据监测到最大值的监测站应靠近发射源(假设发射源为全向发射)的原则来甄别计算点中的真实点。

在本例中假设已经通过以上原则判定计算真值为“计算信号源位置1(24.979363102.714758)”,如图5示:

图5

图6放大图

图6

如上可知,计算误差为19.87米

五、结论

本文叙述了一种TDOA定位算法,算法以可调的穷举方式侦测可行域的点,巧妙地避开了经纬度坐标与直角坐标系的映射问题,转而使用经纬度坐标系下的两点间的距离,便于整体算法在数据单位上的统一。

经验证可以看出,该算法的误差围是极小的,准确率较高,由于采用了C语言编写,具有较强的移植性。

但是该算法同样存在许多不足:

1、条件是在理想的环境下进行的考虑,在其中忽略了地球的椭球特性,给计算带来误差(虽然在小围计算时误差极小),当三个监测站能提供精确地时间差或对未知信号源的位置精度有很高要求时,后期可能需要考虑使用椭球坐标进行建模分析;

2、假设了未知信号源为全向发射为条件才能依据监测站的电平值高低判定真值,在实际应用中可能存在定向信号源或在信号源周围存在近距离遮挡的情况,这时给多交点的真值判定带来困难,但如果有测向站能收到未知信号,则可以结合进行真值判定;

3、本算法采用的在给定围的穷举算法,效率不高,当手动输入的精度较高或扫描的面积较大时程序运行时间较长,后期将利用二分法或更优的方法来优化;

4、目前,由于国各厂家生产的设备接口不一,数据结构难于统一,要做到多台设备协调定位不太容易;

其次,即便是同一个厂家生产的同一类设备,也未必都能做到时钟同步,而采样的时间差通常是纳秒级别的,这样极有可能造成时间差的误判或造成精度问题。

对于这一问题的解决仍需要广行们的共同努力。

[参考文献]

1.《TDOA基本原理及应用》景春;

2.《C语言程序设计(第二版)》谭浩强主编——清华大学;

3.《C语言程序设计教程》毅坤,曹锰,亚玲等编——交通大学;

4.《到达时间差(TDOA)侧向定位研究》朱庆厚,中国电子科技集团第五十四研究所,电现技术第47卷第1期,2007年2月;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1