up目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

无线传感器网络(Wireless Sensor Networks, WSN)是一种分布式传感网络,它的末梢是可以感知和检查外部世界的传感器。WSN中的传感器通过无线方式通信,因此网络设置灵活,设备位置可以随时更改,还可以跟互联网进行有线或无线方式的连接。无线传感器网络主要由三大部分组成,包括节点、传感网络和用户这3部分。其中,节点一般是通过一定方式将节点覆盖在一定的范围,整个范围按照一定要求能够满足监测的范围;传感网络是最主要的部分,它是将所有的节点信息通过固定的渠道进行收集,然后对这些节点信息进行一定的分析计算,将分析后的结果汇总到一个基站,最后通过卫星通信传输到指定的用户端,从而实现无线传感的要求。

基于距离的定位算法通过测量不同节点到目标信号间的距离或角度信息,利用最大似然估计定位法、三角测量定位法、三边测量定位法估计未知目标节点的位置。

常用定位算法:

  • 到达角度算法(AOA)
  • 达到时间算法(TOA)
  • 到达时间差算法(TDOA)
  • 接收信号能量算法(RSSI)

无线传感器网络目标定位方式主要如下:

(1)主动模式

基于距离的定位:测量节点间距离或方位时采用的方法有:到达时间T0A(TOA,Time Of Arrive),到达时间差TDOA,到达角度AOA,接收信号强度指示RSSI。目前常选择RSSI来进行跟踪定位。基于距离的定位方法虽然能够达到很好的精度,但共同缺点都是需要节点间的严格同步,且能量消耗大。

(2)被动模式

与距离无关的定位中,一种方法是对节点到目标间的距离进行估计,然后通过三边测量法或极大似然估计法进行定位。还有一种方法是将包含目标的区域中心或离目标最近的节点位置作为目标位置。

(3)基于声波衰减模型的定位

这种方法需要根据经验测量获得比较接近实际的模型,因此在定位误差上有待提高。

无线传感器网络的许多应用要求节点知道自身的位置信息,才能向用户提供有用的检测服务。没有节点位置信息的监测数据在很多场合下是没有意义的。比如,对于森林火灾检测、天然气管道监测等应用,当有事件发生时,人们关心的一个首要问题就是事件发生在哪里,此时如果只知道发生了火灾却不知道火灾具体的发生地点,这种监测没有任何实质的意义,因此节点的位置信息对于很多场合是至关重要的。

RSS测量模型制定如下。假设源发射功率为Pt ,在没有干扰的情况下,第i个传感器接收到的平均功率为Pi,模型为:

在自由空间中,没有任何障碍物,信号从发射源向四面八方呈球面形状发射出去,各个方向上没有任何区别,因此信号的功率和距离的平方呈反比:(P propto frac{1}{d^2})。RSS就是功率,但是衰减的单位一般用dB来表示,那么就很容易理解RSS与距离的关系了,RSS衰减与距离的对数呈正比,假设已知一个参考距离(d_0)以及这个距离上的RSS为(RSS(d_0)),那么,(RSS(d) = RSS(d_0) - 10nlog(frac{d}{d_0}))。自由空间中(n=2),这就是最常见的对数距离损耗模型(针对室内的传播模型还有分隔损耗、楼层间分隔损耗、Ericsson多重断点模型等)。下图中的黑线是一组在走廊中测量的实际数据,红线是对数距离损耗模型的拟合结果,可以看出模型可以反映总体趋势,但和真实室内环境下的情况还是有较大区别,注意黑线的波动不是因为噪声,而是实际的信号传播环境造成的。走廊这种场景算是比较简单的,如果在其他一下更复杂的场景下,有更多的信号遮挡、反射等因素存在,RSS不仅和距离位置有关,还和周围的各种障碍物有关系,因此在更复杂一点的场景下,可以用射线跟踪技术来分析。

TOA 定位方法,主要是根据测量接收信号在基站和移动台之间的到达时间,然后转换为距离,从而进行定位。该方法至少需要三个基站,才能计算目标的位置,其定位示意图如图所示。 当基站能同时获得 TOA 和 AOA 信息时,通常联合上述公式,采用 TOA/AOA 混合定位方法,令

同理利用 LS 算法求解,得到移动台的位置。ToA方法计算信号从UD到ANs所需要的时间,UD在一个以AN为中心的圆周上,通过ToA测量的到达时间可以计算出圆半径d。因此,为了检测UD的确切位置,至少需要3个ANs。在本例中,UD的估计位置仅在三个圆的相交区域(如果存在的话)内,如图所示。然后,通过LS或加权最小二乘法(WLS)等任何滤波技术都可以很容易地得到实际的估计位置。

二、核心程序

% Basic simulation parameters
roomSize        = [1,1];       % Room size, meters
gridSize        = 3;           % How many sensors per side
refDevices      = 4;           % How many references (must be same length as actualRefLocs)
trials          = 30;          % How many indep trials to run
measMethod      = 'R';         % Use 'R' for RSS, 'T' for TOA
totalDevices    = gridSize^2;
blindDevices    = totalDevices - refDevices;
blindCoords     = 2*blindDevices;
actualRefLocs   = [0,0; 0,1; 1,1; 1,0];
linearRefLocs   = [actualRefLocs(:,1)', actualRefLocs(:,2)'];% Optimization parameters
ftol  = 0.00001;
if measMethod == 'R',func  = 'calcError';       % Use for RSSdfunc = 'calcDError';      % Use for RSS
elsefunc  = 'calcErrorTOA';    % Use for TOAdfunc = 'calcDErrorTOA';   % Use for TOA
end%| 1. Set up the blindfolded device locations
delta    = 1/(gridSize-1);
coords   = 0:delta:1;
xMatrix  = ones(gridSize,1)*coords;
yMatrix  = xMatrix';
xBlind   = [xMatrix(2:gridSize-1), ...xMatrix(gridSize+1:totalDevices-gridSize), ...xMatrix(totalDevices-gridSize+2:totalDevices-1)];
yBlind   = [yMatrix(2:gridSize-1), ...yMatrix(gridSize+1:totalDevices-gridSize), ...yMatrix(totalDevices-gridSize+2:totalDevices-1)];
actualBlindLocs = [xBlind', yBlind'];
actualAllLocs   = [actualRefLocs; actualBlindLocs];
xActual         = actualAllLocs(:,1)';
yActual         = actualAllLocs(:,2)';
actualDist      = L2_distance(actualAllLocs', actualAllLocs',0);%| 2.  Define the channel model
if measMethod == 'R';sigmaOverN = 1.7;                            C = 1;
elsesigma_d = 0.2;                               % Use for TOA
endfor trial = 1:trials,if measMethod == 'R';dhat  = actualDist.*10.^(sigmaOverN/10 .*symrandn(totalDevices))./C;elsedhat  = actualDist + sigma_d .* symrandn(totalDevices);endblindLocs0 = [xBlind, yBlind]; % Use the true coordinates (unrealistic but best case)funcEvals = 0;  dfuncEvals = 0;[coordsMLE, iter, errorMin] = frprmn(blindLocs0, ftol, func, dfunc, 0);disp(sprintf('%d: Function / Deriv. evals: %d / %d.', trial, funcEvals, dfuncEvals));coordEsts(trial, 1:blindCoords) = coordsMLE;
end % for trialestMean = mean(coordEsts);
estCov  = cov(coordEsts);
estVars = diag(estCov);
estStds = sqrt(estVars);
locVars = estVars(1:blindDevices) + estVars((blindDevices+1):(2*blindDevices));
locStd  = sqrt(locVars);toc  % show time of execution% Plot the location estimates for sensors, one at a time.
if 0,figurefor i=1:blindDevices,clfplot(coordEsts(:,i), coordEsts(:,blindDevices+i),'.', ...estMean(i), estMean(blindDevices+i), 'ro')hold onset(gca,'xlim',[-0.2 1.2])set(gca,'ylim',[-0.2 1.2])
%         set(gca,'FontSize',20)
%         set(gca,'DataAspectRatio',[1 1 1])xlabel('X Position (m)')ylabel('Y Position (m)')
%         set(gca,'xTick',0:0.25:1)
%         set(gca,'yTick',0:0.25:1)grid;pause;end
end
 function [dError] = calcDErrorTOA(guessBlindLocs)global refDevices;    % number of reference devices
global blindDevices;  % number of blind devices
global totalDevices;  % the total number of devices
global linearRefLocs; % actual coordinates of the reference devices
global dhat;          % estimated distance between devices based on the measured received power.
global dfuncEvals;    % counter for number of function evaluations.
dfuncEvals = dfuncEvals + 1;
TINY = 1e-8;%| 1.  Use these for the calculation of the relative location error term
x = [linearRefLocs(1:refDevices), guessBlindLocs(1:blindDevices)];
y = [linearRefLocs(refDevices+1:2*refDevices), ...guessBlindLocs(blindDevices+1:2*blindDevices)];for k = (refDevices+1) : totalDevices,l = [1:k-1];modelDist       = max(TINY, sqrt(((x(k)-x(l)).^2 + (y(k)-y(l)).^2)));commonTerm(k,l) = 2.*(1 - dhat(k,l)./modelDist);
end
commonTerm(:,totalDevices) = zeros(totalDevices,1);dFdx = zeros(1,totalDevices);
dFdy = zeros(1,totalDevices);
% row-wise error slopes
for k = (refDevices+1) : totalDevices,others   = 1:k-1;dFdx(k)  = sum(commonTerm(k,others).*(x(k)-x(others)));dFdy(k)  = sum(commonTerm(k,others).*(y(k)-y(others)));
end
% column-wise error slopes
for k = refDevices+1 : (totalDevices-1),others   = (k+1):totalDevices;dFdx(k)  = dFdx(k) + sum(commonTerm(others, k)'.*(x(k)-x(others)));dFdy(k)  = dFdy(k) + sum(commonTerm(others, k)'.*(y(k)-y(others)));
end%| 3. Return the error in a vector.
dError = [dFdx((refDevices+1) : totalDevices), dFdy((refDevices+1) : totalDevices)];

三、测试结果

up00015

基于RSS和TOA两种方法的无线传感器网络定位测量算法matlab仿真相关推荐

  1. m基于ABC人工蜂群优化的无线传感器网络路由优化算法matlab仿真,对比优化前后网络寿命,效率以及可靠性

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件 1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要 无线传感器网络通常使 ...

  2. 【Opencv】基于Opencv和PCV两种方法的Harris 角点检测与匹配

    [Opencv]基于Opencv和PCV两种方法的Harris 角点检测与匹配[附代码] 理解Harris角点检测 代码:Harris角点检测 1.[opencv版]Harris角点检测 2.[PCV ...

  3. 基于R和ArcGIS两种方法制作土地利用转移图详细教程

    Part1背景 土地利用转移矩阵大家应该都会做,但是土地利用转移图还是有部分人不太会做,本期介绍下R和ArcGIS两种方法绘制土地利用转移图,大家多多分享.练习数据来源请引用:地理遥感生态网科学数据注 ...

  4. m基于PSO粒子群优化的第四方物流的作业整合算法matlab仿真,对比有代理人和无代理人两种模式下最低运输费用、代理人转换费用、运输方式转化费用和时间惩罚费用

    目录 1.算法概述 2.仿真效果预览 3.核心MATLAB程序 4.完整MATLAB程序 1.算法概述 粒子群优化 (PSO)算法是通过模拟鸟群觅食过程中的迁徙和群聚行为而提出的一种基于群体智能的全局 ...

  5. prim算法求最小生成树_最小生成树的两种方法(Kruskal算法和Prim算法)

    关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连 ...

  6. 最小生成树的两种方法(Kruskal算法和Prim算法)

    关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连 ...

  7. m基于基站休眠的LTE-A异构网络中节能算法matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 要求 1.开发一个软件工具,可以直观地演示如何在LTE-A异构网络中通过基站的睡眠模式节约能源 2. ...

  8. m基于随机接入代价的异构网络速率分配算法matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 无线接入技术发展迅速,异构网络并存的现象普遍存在:同时,随着终端用户数量的剧增.业务类型的多样化和高 ...

  9. 基于混合高斯模型与帧差法结合的目标跟踪算法matlab仿真

    目录 一.理论基础 二.核心程序 三.仿真测试结果 一.理论基础 目标检测:混合高斯模型与帧差法结合的算法,与单独的混合高斯模型算法作对比,体现前者的优越性 3.要求和结果:对比改进前后的算法,可以非 ...

最新文章

  1. 训练神经网络最应该注意什么才能让显卡最大限度的发挥性能
  2. //某父元素(.class)底下相同class的第二的取值
  3. 机器学习西瓜书各章详细目录定位
  4. 米斯特白帽培训讲义 工具篇 BruteXSS
  5. SpringBoot 2 集成微信扫码支付
  6. matlab各类数学公式
  7. redis映射的概念_在K8S上搭建Redis集群
  8. C语言考试上机操作题库(基础)(参考)
  9. tomcat乱码的几种解决
  10. sort目标跟踪算法
  11. 折扇同构图形_独具一格!同构图形设计技法
  12. 可计算性理论与复杂性介绍
  13. 分布式定时任务框架---Uncode Schedule
  14. java one_javaone是什么意思
  15. IDEA 中 project窗口,不显示项目工程目录,解决方法
  16. 文章阅读 - 机器学习检测DNS隧道
  17. 基于一定微信生态的小程序是否反之又形成了微信互联网?
  18. 2022年深圳数据分析师认证,这个(CPDA)错不了
  19. 以 “铝型材的特点” 为中心,写一段话
  20. 12306订票客户端 FOR .NET 演示项目 【2】准备工具

热门文章

  1. mysql报错2_mysql 启动报错--发现系统错误2,系统找不到指定的文件。?报错-问答-阿里云开发者社区-阿里云...
  2. Spine动画局部换装(切换武器)
  3. linux下使用C创建文件夹
  4. CSS Fonts字体属性
  5. 中国甲基异丁基甲醇行业头部企业市场占有率及排名调研报告
  6. linux文件的权限机制,linux 文件特殊权限
  7. docker-容器相关:运行、启动、停止、进入、导出和导入、删除
  8. 苏联宇航员在太空上到底有没有酒驾空间站?
  9. 排查MYSQL42000错误
  10. 微信的朋友圈为什么不设置到首屏或者下栏,为什么路径这么深