TDOA定位的Chan算法MATLAB源代码

合集下载

多点定位系统算法分析和优化探讨

多点定位系统算法分析和优化探讨

多点定位系统算法分析和优化探讨摘要】随着我国民航事业的快速发展,新监视系统的研发与应用已是必然趋势。

本文首先对多点定位技术MLAT与其他监视技术进行了比较,说明了多点定位技术的优势,并对其最具代表性的两种算法Taylor算法和Chan算法进行了深入研究以及仿真对比分析,提出了一种约束初值高精度迭代目标定位算法或者称为协同算法,即把 Chan 算法得到的初始解应用于 Taylor算法,从而得到精度更高的目标位置。

关键词: 多点定位;精度;算法;仿真分析0 引言多点定位技术MLAT(Multilateration)作为先进的场面监视手段,定位精度高,刷新频率快,在世界上已被很多国家作为民用甚至国防建设的重要研究方向。

多点定位系统经过多年的开发和试验已具有较高的定位精度,成为欧洲和美国民航局认可的场面监视技术,并被其迅速推广实施。

在世界范围内很多大中型机场已经将多点定位系统投入使用,如法兰克福、多伦多、孟菲斯和底特律等城市的民用航空机场。

多点定位系统已成为 ICAO(国际民航组织)提出的先进场面活动引导和控制系统 (A-SMGCS)的核心技术。

目前,多点定位系统已经被广泛应用在国内外的大中型机场中,实现了精确的场面监视、航路监视、精密进近、广域多点相关监视等。

1 多点定位关键技术在多点定位系统中,时钟同步技术与布站选址是两个至关重要的技术,也是提高多点定位系统定位精度的有效方法。

时钟同步技术主要包括集中式时钟同步、分布式时钟同步、GNSS时钟同步、参考应答机同步、原子时钟同步等。

集中式时钟同步是将各个远端接收站接收到的信号传送回中心处理站,由中心处理站统一对各个接收站的信息进行标记,这种时钟同步方式容易造成时间延时过大,信号到达远端接收站的时间估计误差较大,但设备易于安装,结构简单。

为了减小由信息传送造成的时间误差,多采用TDOA原理(到达时间差)进行目标位置求解。

对于前四种时钟同步技术,需要注意远端站和中心处理站间的时间偏差和时间补偿,减小时钟同步带来的定位误差。

基于TDOA的CHAN算法在UWB系统中的应用

基于TDOA的CHAN算法在UWB系统中的应用

出 了主要 针 对 室 内物体 的基 于到 迭 时 问差 ( DOA)的 定 位 算 T
法 。 首 先 对 常 用 的 CH N 算 法 在 L A OS情 况 下 的 性 能 展 开 研
究 .得 出此 算 法对 于服 从 正 态分 布 的误 差有 很 好 的 性 能 ,然 后
仿 真 结果 表 明 ,CHA 算 法定 位 性 能 可 以 达到 理 想 效 果 。 N 关键 词 :T DOA;CH AN 算 法
置。
间/ 到达 时 间 差 )的 测 量 值 就 构 成 一 组 关 于 目标 位 置 的 圆 周 曲
线 / 曲线 方 程 组 ,求 解 该 方 程 组 就 可 以 得到 目标 的估 计 位 置 。 双 但 是 定 位方 程 组 都 是 非 线 性 的 ,而 且 测 量 总 存 在 误差 ,其 中 的
应用 ,基 于无 线 网 络定 位技 术 的应 用 ,脉 冲超 宽 带 ( R U I — WB)

f Y ’ ( Q1 ) Q1 】 - - r≈ - h
△ = △ 2 1●●●●●●●● J Y2 r △ J △3 r
() 2

无线定位技 术尤其具有广 阔的发展前 景。U WB信 号 实 现 定 位
E A 算 法 H N
在 超 宽 带室 内定 位 系 统 中 ,一 旦 获 得 T A F O ( 达 时 O FD A 到 间/ 到达 时 间差 )的测 量 值 ,就 可 以得 到 目标 到 定 位 站 的 距 离
或 目标 到两 个 定 位站 之 间 的距 离 差 ,多 个 T I DOA ( 达 时 OA T 到
与 跟 踪具 有 以下 优 势 : ( )具 有极 高 的距 离 分 辨 能力 。 1

浅析无线电考试作弊信号快速定位方案高超

浅析无线电考试作弊信号快速定位方案高超

浅析无线电考试作弊信号快速定位方案高超发布时间:2021-08-31T02:56:30.862Z 来源:《中国科技人才》2021年第15期作者:高超[导读] 本文首先梳理了无线电考试作弊信号的种类及原理,其对考试公平、公正带来的挑战,最后结合最近无线电定位技术如何解决排查工作中遇到的问题提出了一种基于TDOA技术快速锁定信号源的解决方案。

德州市无线电监测中心山东省德州市 253000摘要:本文首先梳理了无线电考试作弊信号的种类及原理,其对考试公平、公正带来的挑战,最后结合最近无线电定位技术如何解决排查工作中遇到的问题提出了一种基于TDOA技术快速锁定信号源的解决方案。

关键词:无线电考试作弊 TDOA定位智能识别分析1.前言近年来,随着通信技术的发展,使得人们可以利用通信设备和网络实现5W(Whoever、Whenever、Wherever、Whomever、Whatever),即任何人可在任何时候、任何地方与任何人进行任何形式的通信,这使得考场内的考生可以方便地通过无线电设备与考场外人员进行信息交换,为考生从场外获取与考试相关的信息的作弊行为提供了方便的工具。

如今无线电技术正与考试作弊加速融合,利用无线技术的作弊助考行为,已经形成了整套地下产业链和商业模式,并趋于成熟;非法盗用和侵占合法的无线电频率,影响了正常的无线电通信和电磁环境。

在快速甄别作弊信号后,如何能够快速、准确的确定作弊设备位置,对打击高科技、隐蔽性强、组织严密的利用无线电技术进行违法作弊的犯罪分子有极大的意义。

2.无线电考试作弊技术特点及发展趋势利用无线电设备进行考试作弊发送答案有两种途径:一种是发射模拟语音信号,接收端通常是微型耳机;另一种是发射数字调制的文本,接收端为带显示屏的伪装文具。

由于防控和定位手段的介入,作弊团伙的警惕性越来越高,作案方式由手动发射信号,逐步升级为通过互联网遥控作弊发射设备进行发射,以免暴露自身。

2.1 语音信号语音信号主要集中在130M-170M、220M、400-470M、1150M、1250M等,通常为窄带的调频信号,发射功率一般不超过5W。

tdoa定位算法matlab代码

tdoa定位算法matlab代码

TDOA定位算法是一种基于时间差测量的定位方法,通过测量信号在不同接收节点的到达时间差来确定信号源的位置。

在实际应用中,TDOA定位算法可以用于无线定位、声纳定位等领域,具有广泛的应用前景。

为了实现TDOA定位算法,我们可以使用MATLAB编程语言进行算法实现。

下面将介绍如何利用MATLAB编写TDOA定位算法的代码,并给出具体的实现步骤。

一、获取信号到达时间差数据1.1 收集接收节点之间的信号到达时间差数据,包括信号源到各个接收节点的时间差信息。

1.2 对采集到的时间差数据进行预处理,包括去除异常值、滤波处理等,以确保数据的准确性和可靠性。

二、计算信号源位置2.1 构建TDOA定位算法的数学模型,根据信号到达时间差数据和接收节点的位置信息,建立定位问题的数学表达式。

2.2 利用MATLAB编程语言实现TDOA定位算法的数学模型,包括距离函数的定义、误差函数的构建等。

2.3 运用数值计算方法,如最小二乘法、非线性优化等,对定位问题进行求解,得到信号源的位置信息。

三、算法性能评估3.1 设计实验方案,生成合成数据或利用实际数据进行仿真实验。

3.2 对TDOA定位算法的性能进行评估,包括定位精度、计算速度、鲁棒性等方面的指标。

3.3 对算法的评估结果进行分析和讨论,找出算法的优点和不足之处,并提出改进方向。

通过以上步骤,我们可以实现TDOA定位算法的MATLAB代码,并对算法的性能进行评估和改进,从而更好地应用于实际系统中。

需要注意的是,在实际应用中,TDOA定位算法还需要考虑到信号传播模型、多径效应、多普勒效应等因素,进一步提高定位算法的准确性和鲁棒性。

也可以结合其他定位方法,如AOA定位、TOA定位等,进行多模式融合,提高定位系统的整体性能。

TDOA定位算法是一种基于时间差测量的定位方法,具有广泛的应用前景。

通过MATLAB编程实现TDOA定位算法的代码,并对算法的性能进行评估和改进,可以更好地应用于无线定位、声纳定位等实际系统中。

基于Chan的TDOA三维定位算法

基于Chan的TDOA三维定位算法
可根据z ≈ ( G Q ~ G ) ~ G : Q h求得。
[ = 一 [ 蔓 篆 襄 ] { [ 蓉 ] R + [ 霉 茎 三 茎 ] } c 4
当基站数 目 Ⅳ ≥5时, T D O A测量值的数 目大于 未知参数的数 目,可以采用加权最d ' , - - 乘法( WL S ) 来充分利用冗余的数据 , C h a n 算法能获得更加好 的 移动终端位置估计值 。此时先将初始非线性 T D O A 方程组转换为线性方程组 , 然后采用 WL S 得到初始
2 T D O A定位原 理与 C h a n算法
基于 T DO A 的定 位 系 统 中 , 一旦获得 T D O A 的
测量值 ,就可以得到移动终端到定位基站之间的距 解 ,再利用第一次得到的估计坐标及附加变量等 已 离差 ,多个测量值构成一组关于移动终端位置的双 知约束条件进行第二次 WL S 估计 , 从而得到改进 的 曲线方程组 , 求解该方程组就可以得 到 目 标 的估计 位置。 由于定位方程组是非线性的 , 而且 T D O A的测 量总存在误差 ,所 以定位问题就由求解非线性方程


a Z { ( hG ) T ’ l r 一 ( h — G n z a ) ) ( 6 )

与前面的分析和推倒类似 ,可 以得到含有移动 终端位置的未知量 Z 。 的解为:


, 、 ( G 一 G ) G h



z = ( G 、 l , 。 _ G ) G _ h
其中 , 为 误 差 矢 量 V 的 协 方 差 矩 阵

( 1 0 )
[ ’ I , ’ I , = B Q B [ 6 1 , Q为T D O A测量值的协方差矩

TDOA,AOA定位的扩展卡尔曼滤波定位算法Matlab源码

TDOA,AOA定位的扩展卡尔曼滤波定位算法Matlab源码

TDOA,AOA定位的扩展卡尔曼滤波定位算法Matlab源码TDOA/AOA定位的扩展卡尔曼滤波定位算法Matlab源码(2007-08-24 01:48:23) 标签:知识/探索function[MX,MY,SS]=ExtendedKalmanFilter(D1,D2,D3,A1,A2,A3,Flag1,FLAG2,S0,P0, SigmaR,SigmaAOA)%% TDOA/AOA定位的扩展卡尔曼滤波定位算法%% 输入参数列表% D1 基站1和移动台之间的距离% D2 基站2和移动台之间的距离% D3 基站3和移动台之间的距离% A1 基站1测得的角度值% A2 基站2测得的角度值% A3 基站3测得的角度值1×1矩阵,取值1,2,3,表明是以哪一个基站作为基准站计算TDOA数据的 % Falg1% FLAG2 N×3矩阵,取值0和1,每一行表示该时刻各基站的AOA是否可选择, % 1表示选择AOA数据,FLAG2并非人为给定,而是由LOS/NLOS检测模块确定% S0 初始状态向量,4×1矩阵% P0 预测误差矩阵的初始值,4×4的矩阵% SigmaR 无偏/有偏卡尔曼输出距离值的方差,由事先统计得到 % SigmaAOA 选择AOA数据的方差,生成AOA数据的规律已知,因此可以确定 %% 输出参数列表% MXM% Y%% 第一步:计算TDOA数据if Flag1==1TDOA1=D2-D1;TDOA2=D3-D1;elseif Flag1==2TDOA1=D1-D2;TDOA2=D3-D2;elseif Flag1==3TDOA1=D1-D3;TDOA2=D2-D3;elseerror('Flag1输入有误,它只能取1,2,3');end%% 第二步:构造两个固定的矩阵%构造状态转移矩阵ΦPhi=[1, 0,0.025, 0;0, 1, 0,0.025;0, 0, 1, 0;0, 0, 0, 1]; %构造W的协方差矩阵QSigmaU=0.00001;%噪声方差取很小的值Q=[0, 0, 0, 0;0, 0, 0, 0;0, 0,SigmaU, 0;0, 0, 0,SigmaU]; %% 第三步:输出数据初始化N=length(D1);MX=zeros(1,N);MY=zeros(1,N);MX(1)=S0(1);MY(1)=S0(2);SS=zeros(4,N);SS(:,1)=S0;%% 第四步:以下是迭代过程for i=2:NFlag2=FLAG2(i,:);%当前各信道环境的LOS/NLOS判据R=FunR(SigmaR,SigmaAOA,Flag2);%调用产生R矩阵的子函数S1=Phi*S0;%由状态方程得到的预测值H=FunH(S1,Flag1,Flag2);%调用产生H矩阵的子函数P1=Phi*P0*(Phi')+Q;%计算上述预测值的协方差矩阵K=P1*(H')*inv(H*P1*(H')+R);%计算滤波增益(加权系数)Z=FunZ(TDOA1,TDOA2,A1,A2,A3,SigmaR,SigmaAOA,Flag2,i);%调用构造观察向量的子函数hS1=FunhS1(S1,Flag1,Flag2);%调用构造观测值的估计值向量的子函数S2=S1+K*(Z-hS1);%加权得到滤波输出值%更新S0和P0P2=P1-K*H*P1;S0=S2;P0=P2;%记录滤波输出值MX(i)=S2(1);MY(i)=S2(2);SS(:,i)=S2;endfunction Z=FunZ(TDOA1,TDOA2,A1,A2,A3,SigmaR,SigmaAOA,Flag2,i) %调用构造观察向量的子函数m=sum(Flag2);Z=zeros(2+m,1);Z(1)=TDOA1(i);Z(2)=TDOA2(i);if Flag2(1)==0&&Flag2(2)==0&&Flag2(3)==0%空语句elseif Flag2(1)==1&&Flag2(2)==0&&Flag2(3)==0Z(3)=A1(i);elseif Flag2(1)==0&&Flag2(2)==1&&Flag2(3)==0Z(3)=A2(i);elseif Flag2(1)==0&&Flag2(2)==0&&Flag2(3)==1Z(3)=A3(i);elseif Flag2(1)==1&&Flag2(2)==1&&Flag2(3)==0Z(3)=A1(i);Z(4)=A2(i);elseif Flag2(1)==1&&Flag2(2)==0&&Flag2(3)==1Z(3)=A1(i);Z(4)=A3(i);elseif Flag2(1)==0&&Flag2(2)==1&&Flag2(3)==1Z(3)=A2(i);Z(4)=A3(i);elseif Flag2(1)==1&&Flag2(2)==1&&Flag2(3)==1Z(3)=A1(i);Z(4)=A2(i);Z(5)=A3(i);elseerror('Flag2格式不正确,它的元素只能取0或者1'); endfunction R=FunR(SigmaR,SigmaAOA,Flag2)%% 产生R矩阵的子函数m=sum(Flag2);B=[-1,1,0;-1,0,1];R11=B*[SigmaR,0,0;0,SigmaR,0;0,0,SigmaR]*(B');R12=zeros(2,m);R21=zeros(m,2);if m==0R22=[];elseif m==1R22=SigmaAOA;elseif m==2R22=[SigmaAOA, 0;0,SigmaAOA]; elseif m==3R22=[SigmaAOA, 0, 0;0,SigmaAOA, 0;0, 0,SigmaAOA];elseerror('Flag2格式不正确,它的元素只能取0或者1'); end R=[R11,R12;R21,R22];function hS1=FunhS1(S1,Flag1,Flag2)%% 构造观测值的估计值向量的子函数%提取估计的移动台坐标x=S1(1);y=S1(2);%三个基站的横纵坐标x1=0;y1=0;x2=5;y2=8.66;x3=10;y3=0;%计算移动台到三个基站的距离(估计值)d1=((x-x1)^2+(y-y1)^2)^0.5;d2=((x-x2)^2+(y-y2)^2)^0.5;d3=((x-x3)^2+(y-y3)^2)^0.5;M=2+sum(Flag2);hS1=zeros(M,1);if Flag1==1%以第一个基站为基准计算TDOA数据hS1(1)=d2-d1;hS1(2)=d3-d1;elseif Flag1==2%以第二个基站为基准计算TDOA数据hS1(1)=d1-d2;hS1(2)=d3-d2;elseif Flag1==3%以第三个基站为基准计算TDOA数据hS1(1)=d1-d3;hS1(2)=d2-d3;elseerror('Flag1格式不正确,它只能取1,2,3');endh1=atan2(y-y1,x-x1);h2=atan2(y-y2,x-x2);h3=atan2(y-y3,x-x3);if Flag2(1)==0&&Flag2(2)==0&&Flag2(3)==0%空语句elseif Flag2(1)==1&&Flag2(2)==0&&Flag2(3)==0hS1(3)=h1;elseif Flag2(1)==0&&Flag2(2)==1&&Flag2(3)==0hS1(3)=h2;elseif Flag2(1)==0&&Flag2(2)==0&&Flag2(3)==1hS1(3)=h3;elseif Flag2(1)==1&&Flag2(2)==1&&Flag2(3)==0hS1(3:4)=[h1;h2];elseif Flag2(1)==1&&Flag2(2)==0&&Flag2(3)==1hS1(3:4)=[h1;h3];elseif Flag2(1)==0&&Flag2(2)==1&&Flag2(3)==1hS1(3:4)=[h2;h3];elseif Flag2(1)==1&&Flag2(2)==1&&Flag2(3)==1hS1(3:5)=[h1;h2;h3];elseerror('Flag2格式不正确,它的元素只能取0或者1'); end。

TDOA定位的Chan算法MATLAB源代码

TDOA定位的Chan算法MATLAB源代码

TDOA定位的Chan算法MATLAB源代码func on [POS_ref,POS1,POS2,POS3,POS4] = TDOA_chan(R,Pbs,Q)%% TDOA定位定位Chan算法%*********************************************************% CHAN算法,假设移动台与各基站位置较近,需进行三四WLS计算% 输入参数:% R(N-1×1): TDOA测量值% Pbs(N×2): 基站的坐标,第一列为X,第二列为Y;参考基站坐标位于第一行% 输出参数:% POS_ref(2X1):第一次WLS的估计结果,作为参考作最终定位结果的判决% POS1(2X1) :定位结果1% POS2(2X1) :定位结果2% POS3(2X1) :定位结果3% POS4(2X1) :定位结果4%这段程序用于自己产生算法输入参数,用于算法测试% delta = 10; %TDOA测量误差的标准差,用于产生Q矩阵% M=4; %参考基站外的基站数量% Xb = 20;Yb = 100; %参考的基站坐标% X = zeros(M,2);% a = 2*pi/M;% for i=1:M %生成其他基站的坐标% X(i,1) = 400*cos(a*(i-1));% X(i,2) = 400*sin(a*(i-1));% end% Xreal = -150;Yreal = 200;%移动台真实坐标% %产生TDOA测量结果% Rb = sqrt((Xreal - Xb)^2+(Yreal - Yb)^2);%移动台到基站的真实距离% N = normrnd(0,delta,1,M);%产生TDOA测量误差% Kb = Xb^2+Yb^2;% R = zeros(M,1);% for i=1:M %产生TDOA测量值% R(i) = -Rb+sqrt((Xreal - X(i,1))^2+(Yreal - X(i,2))^2)+N(i);% end% Q = (0.5*eye(M)+0.5*ones(M))*(delta^2);% Pbs = [Xb Yb;X];% N = 5;% [POS_ref POS1 POS2 POS3 POS4] = TDOA_chan(R,Pbs,Q)N = size(Pbs,1);K = zeros(1,N);K = Pbs(:,1).^2 + Pbs(:,2).^2;ha = 0.5*(R.^2-K(2:N)+K(1))Ga = -[Pbs(2:N,1)-Pbs(1,1) Pbs(2:N,2)-Pbs(1,2) R]%计算第一次WLS估计结果(远距算法)Za = inv(Ga.'*inv(Q)*Ga)*Ga.'*inv(Q)*ha;Ba = diag(Va);Fa = Ba*Q*Ba;Zacov = inv(Ga.'*inv(Fa)*Ga);%第一次WLS计算(近距算法)Va2 = sqrt((Za2(1)-Pbs(2:N,1)).^2+(Za2(2)-Pbs(2:N,2)).^2);Ba2 = diag(Va2);Fa2 = Ba2*Q*Ba2;Zacov2 = inv(Ga.'*inv(Fa2)*Ga);%第二次WLS计算(近距算法)Gb = [1 0;0 1;1 1];Bb2 = [Za2(1)-Pbs(1,1) 0 0;0 Za2(2)-Pbs(1,2) 0;0 0 sqrt((Za2(1)-Pbs(1,1))^2+ (Za2(2)-Pbs(1,2))^2)];Fb2 = 4*Bb2*Zacov2*Bb2;POS_ref = Za2(1:2,1); %第一次WLS的估计结果,作为参考作最终定位结果的判决POS1 = sqrt(Zb2)+Pbs(1,:).'; %定位结果1POS2 = -sqrt(Zb2)+Pbs(1,:).';%定位结果2POS3 = [-sqrt(Zb2(1));sqrt(Zb2(2))]+Pbs(1,:).';%定位结果3POS4 = [sqrt(Zb2(1));-sqrt(Zb2(2))]+Pbs(1,:).';%定位结果4源代码运行结果展示037附图1.emf。

tdoa泰勒算法代码matlab

tdoa泰勒算法代码matlab

tdoa泰勒算法代码matlabTDOA泰勒算法是一种用于定位无线电源的算法,它基于时间差测量(TDOA)技术,可以在无需知道信号源的位置的情况下,通过多个接收器接收到的信号到达时间差来确定信号源的位置。

在实际应用中,TDOA泰勒算法被广泛应用于无线定位、雷达定位、声波定位等领域。

在MATLAB中实现TDOA泰勒算法,需要先定义信号源的位置和接收器的位置,然后通过接收器接收到的信号到达时间差来计算信号源的位置。

具体实现过程如下:1. 定义信号源和接收器的位置在MATLAB中,可以使用矩阵来表示信号源和接收器的位置。

例如,定义一个3x2的矩阵S表示3个信号源的位置,定义一个2x4的矩阵R表示4个接收器的位置,代码如下:S = [1 2; 3 4; 5 6];R = [7 8 9 10; 11 12 13 14];2. 计算信号到达时间差在TDOA泰勒算法中,信号到达时间差可以通过接收器接收到的信号到达时间来计算。

假设接收器1和接收器2分别接收到信号源1和信号源2的信号,信号到达时间差为t,则有:t = (r1 - s1) - (r2 - s2)其中,r1和r2分别表示接收器1和接收器2接收到信号的时间,s1和s2分别表示信号源1和信号源2的位置。

在MATLAB中,可以使用矩阵运算来计算信号到达时间差。

例如,定义一个4x3的矩阵T表示4个接收器接收到3个信号源的信号到达时间差,代码如下:T = [(R(:,1)-S(1,:))-(R(:,2)-S(2,:)) (R(:,1)-S(1,:))-(R(:,3)-S(3,:)) (R(:,2)-S(2,:))-(R(:,3)-S(3,:))];3. 使用泰勒算法计算信号源位置在TDOA泰勒算法中,可以使用泰勒展开公式来计算信号源的位置。

假设信号源的位置为x和y,则有:f(x,y) = (t1 - t2)^2 - ((x - R1x)^2 + (y - R1y)^2) + ((x - R2x)^2 + (y - R2y)^2)其中,t1和t2分别表示接收器1和接收器2接收到信号的时间,R1x 和R1y分别表示接收器1的位置,R2x和R2y分别表示接收器2的位置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TDOA定位的Chan算法MATLAB源代码。

function [POS_ref,POS1,POS2,POS3,POS4] = TDOA_chan(R,Pbs,Q)
%*********************************************************
% CHAN算法,假设移动台与各基站位置较近,需进行三四WLS计算
% 输入参数:
% R(N-1×1): TDOA测量值
% Pbs(N×2): 基站的坐标,第一列为X,第二列为Y;参考基站坐标位于第一行% 输出参数:
% POS_ref(2X1):第一次WLS的估计结果,作为参考作最终定位结果的判决
% POS1(2X1) :定位结果1
% POS2(2X1) :定位结果2
% POS3(2X1) :定位结果3
% POS4(2X1) :定位结果4
%这段程序用于自己产生算法输入参数,用于算法测试
% delta = 10; %TDOA测量误差的标准差,用于产生Q矩阵
% M=4; %参考基站外的基站数量
% Xb = 20;Yb = 100; %参考的基站坐标
% X = zeros(M,2);%M行2列0
% a = 2*pi/M;
% for i=1:M %生成其他基站的坐标
% X(i,1) = 400*cos(a*(i-1));
% X(i,2) = 400*sin(a*(i-1));
% end
% Xreal = -150;Yreal = 200;%移动台真实坐标
% %产生TDOA测量结果
% Rb = sqrt((Xreal - Xb)^2+(Yreal - Yb)^2);%移动台到基站的真实距离
% N = normrnd(0,delta,1,M);%产生TDOA测量误差正态分布均值0 标准差delta 返回一个N数组,下标为1 到M
% Kb = Xb^2+Yb^2;
% R = zeros(M,1);
% for i=1:M %产生TDOA测量值
% R(i) = -Rb+sqrt((Xreal - X(i,1))^2+(Yreal - X(i,2))^2)+N(i);
% end
% Q = (0.5*eye(M)+0.5*ones(M))*(delta^2);
% Pbs = [Xb Yb;X];%矩阵
% N = 5;
% [POS_ref POS1 POS2 POS3 POS4] = TDOA_chan(R,Pbs,Q)
N = size(Pbs,1);%维度
K = zeros(1,N);
K = Pbs(:,1).^2 + Pbs(:,2).^2;
ha = 0.5*(R.^2-K(2:N)+K(1))
Ga = -[Pbs(2:N,1)-Pbs(1,1) Pbs(2:N,2)-Pbs(1,2) R]
%计算第一次WLS估计结果(远距算法)
Za = inv(Ga.'*inv(Q)*Ga)*Ga.'*inv(Q)*ha;
Ba = diag(Va);
Fa = Ba*Q*Ba;
Zacov = inv(Ga.'*inv(Fa)*Ga);
%第一次WLS计算(近距算法)
Va2 = sqrt((Za2(1)-Pbs(2:N,1)).^2+(Za2(2)-Pbs(2:N,2)).^2);
Ba2 = diag(Va2);
Fa2 = Ba2*Q*Ba2;
Zacov2 = inv(Ga.'*inv(Fa2)*Ga);
%第二次WLS计算(近距算法)
Gb = [1 0;0 1;1 1];
Bb2 = [Za2(1)-Pbs(1,1) 0 0;0 Za2(2)-Pbs(1,2) 0;0 0 sqrt((Za2(1)-Pbs(1,1))^2+(Za2(2)-Pbs(1,2))^2)];
Fb2 = 4*Bb2*Zacov2*Bb2;
POS_ref = Za2(1:2,1); %第一次WLS的估计结果,作为参考作最终定位结果的判决POS1 = sqrt(Zb2)+Pbs(1,:).'; %定位结果1
POS2 = -sqrt(Zb2)+Pbs(1,:).';%定位结果2
POS3 = [-sqrt(Zb2(1));sqrt(Zb2(2))]+Pbs(1,:).';%定位结果3
POS4 = [sqrt(Zb2(1));-sqrt(Zb2(2))]+Pbs(1,:).';%定位结果4
源代码运行结果展示。

相关文档
最新文档