基于三边测量法的Matlab程序设计

2018-10-25 10:33李明
西部论丛 2018年10期
关键词:测量方法三边程序设计

摘 要:定位技术是无线通信的热点研究问题之一,而三边测量方法是构建复杂定位技术的基础。本文基于无线通讯基站室内的二维定位问题,针对三边测量方法,利用Matlab软件对三边测量方法进行程序设计,并采用四组二维数据验证了程序的可行性。

1引言

Matlab是一款结合了数值和符号计算引擎、图形系统和编程语言的数学软件,可用于处理较为复杂的计算或者是图像问题。Matlab的应用非常广泛,包括通信、控制系统设计、测试和测量、信号和图像处理等众多领域[1-3]。

目前,定位技术是无线通信的热点研究问题之一[4-7],针对无限通讯基站的室内三维定位问题,文献[8、9]分别分析了三边测量法和四边测量法的原理,并做了简单分析,但是并没有侧重于Matlab的程序设计研究,而本文主要研究基于线通讯基站室内的二维定位问题,针对三边测量方法,利用Matlab软件对三边测量方法进行程序设计,并采用二维数据验证了程序的可行性。

2三边测量法

设待测终端的坐标为X(x,y),3个基站的坐标为A1(a1,b1),A2(a2,b2),A3(a3,b3),X到A1,A2,A3的距离分别为d1,d2,d3,则根据二维空间两点间距离公式可得到方程组:

可解得X坐标为:

下面针对三边测量法,利用Matlab软件进行程序设计。

3基于三边测量法的程序设计

%读数据

LOS=xlsread('case021_input','LOS')

base=xlsread('case021_input','base')

%读取参考基站的坐标[cx,cy]

cx=base(:,1)

cy=base(:,2)

figure(1)

plot(cx,cy,'k^');%画参考基站图

hold on

grid on

%移动位置数mlen

mlen=length(LOS);%移动位置数mlen

x=[]

y=[]

for p=1:30%对每个移动位置

for i=1:100

w=LOS(p,:)

disp('次数')

p

[da,db,dc,t1,t2,t3]=find_three_p(w)%从每个移动位置TOA中任意选出三值

base1=base(t1,:)

base2=base(t2,:)

base3=base(t3,:)

[locx,locy]=triposition(base1,da,base2,db,base3,dc)%计算定位坐标

if (-500

x(p)=locx

y(p)=locy

break

else continue

end

end

end

plot(x,y,'r>-')

for j=1:110

text(x(j),y(j),[' ' num2str(j)])

end

xlabel('x')

ylabel('y')

legend('参考基站','移动轨迹','Location','SouthEast')

title('三点测量法的移动轨迹')

grid on

%find_three_p(调用函数)

function [da,db,dc,t1,t2,t3]=find_three_p(w)

%从TOA数据中随机选出不同的三个值

%依次每一个移动位置到相应基站的LOS距离w

%输出:任意选出da,db,dc三个LOS距离

%da,db,dc为选出的任意三个LOS距离

len=length(w)

% 取一个

t=fix(len*rand(1,1))+1

ma=t

da=w(t)

t1=t; %t1是标记

%取第二个

while(1)

t=fix(len*rand(1,1))+1

if(t~=ma)

mb=t

db=w(t)

break

end

end

t2=t;%t2是标记

%取第三个

while(1)

t=fix(len*rand(1,1))+1

if(t~=ma)&&(t~=mb)

mc=t

dc=w(t)

break

end

end

t3=t;%t3是標记

%函数调用triposition.m%

function [locx,locy]=triposition(B1,da,B2,db,B3,dc)

%三边定位法%

%输入:1.参考节点B1,B2,B3;2.移动位置坐标D(locx,locy)到这三点的距离分别为da,db,dc

%locx,locy为计算的移动位置坐标D点的位置坐标

syms x y%f符号变量

%求解方程组

f1='2*x*(B1(1)-B3(1))+B3(1)^2-B1(1)^2+2*y*(B1(2)-B3(2))+B3(2)^2-B1(2)^2=dc^2-da^2'

f2='2*x*(B2(1)-B3(1))+B3(1)^2-B2(1)^2+2*y*(B2(1)-B3(2))+B3(2)^2-B2(2)=dc^2-db^2'

[xx,yy]=solve(f1,f2,x,y); %解关于x,y的符号方程组,得到解的符号表示,并存入xx,yy

px=eval(xx);%解的数值px(1),px(2)

py=eval(yy);%解的数值py(1),py(2)

locx=px

locy=py

4 实验仿真

利用以上程序,结合实际二维数据,对三边测量法进行仿真。图1对应二维数据的移动终端的30个位置变

化图。

由图可知,采用实际数据对程序进行仿真,观察发现终端运行轨迹图比较符合实际情况,说明三边测量法能够较准确的确定终端位置,且设计的基于三边测量法的程序是有效的。

5结语

基于无线通讯基站室内的二维定位问题,针对三边测量方法,利用Matlab软件进行程序设计。采用实际数据对程序进行仿真,观察发现终端运行轨迹图比较符合实际情况,说明三边测量法能够较准确的确定终端位置,且设计的基于三边测量法的程序是有效的。但是因为测量误差的存在,以及程序自身的缺陷,有些点的位置表现出了异常,在后续工作中应该重视并加以改进。现出了异常,在后续工作中应该重视并加以改进。

参考文献:

[1] 丛爽. 面向 MATLAB 工具箱的神经网络理论与应用[M]. 中国科学技术大学出版社, 1998.

[2] 闻新, 周露, 李翔, 等. MATLAB 神经网络仿真与应用[J]. 2003.

[3] 程铭东, 詹亮. 多传感器网络目标定位的一种算法及其实现[J]. 计算机工程与应用, 2008, 44(7): 231-233.

[4] 宋俊鹏. 基于 Matlab 全球定位系统空间部分仿真[J]. 电子测量技术, 2004 (4): 13-14.

[5] 費扬, 杜庆治. 基于 Matlab 的 WiFi 室内定位分析系统设计与实现[J]. 软件导刊, 2018, 17(3): 117-120.

[6] 吕振, 赵鹏飞. 一种改进的无线传感器网络加权质心定位算法[J]. 计算机测量与控制, 2013, 21(4): 1102-1104.

[7] 彭燕. 无线传感器网络定位优化算法及其仿真[J]. 计算机与数字工程, 2011, 39(3): 9-11.

[8] 葛文涛, 陈俊杰出. 基于三边定位的WSN锚节点加权补偿算法[J]. 测控技术, 2010,29(9): 92-95.

[9] 王行甫, 戴福泉, 苗付友. 基于 TOA 的三维无线传感器网络节点定位算法[J]. 自动化与仪表, 2008,23(12): 1-4.

作者简介:李明(1981.3—)男,汉,四川,研究生,工程师,研究方向:机场工程,单位:中国民用航空局第二研究所。

猜你喜欢
测量方法三边程序设计
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
基于CORS的高精度GPS测量方法在公路测量中应用研究
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
圆周运动角速度测量方法赏析
三角形的三边关系在一类问题中的应用
《快递业温室气体排放测量方法》审议通过
电功率有关知识综述
一道2007北方数学奥林匹克试题的推广