toa算法
Ⅰ 请问 无线定位中 TOA 误差分析如何 Matlab 仿真啊
http://wenku..com/view/0e4e192a4b73f242336c5f30.html
希望对你有帮助
Ⅱ 无线网络定位算法的程序。TOA/RSSI什么算法的都可以,想找个程序作个参考。
我有matlab的。
太多了,我的QQ:39400877
%|
%| SCRIPT: simMLE
%|
%| PURPOSE: Simulate a relative location system by generating
%| random measurements and maximizing the likelihood fcn.
%| After many trials, show the results vs. the Cramer-Rao Bound.
%|
%| AUTHOR: Neal Patwari
%| http://www.engin.umich.e/~npatwari/
%|
%| REFERENCE: Relative Location Estimation in Wireless Sensor Networks
%| (N. Patwari, A. O. Hero, M. Perkins, N. S. Correal, R. J. O'Dea),
%| IEEE Trans. Signal Processing, vol. 51, no. 8, Aug. 2003, pp. 2137-2148.
%|
tic
% Use globals to allow minimization functions access to network info,
% debugging info.
global refDevices blindDevices totalDevices linearRefLocs dhat funcEvals dfuncEvals;
% Basic simulation parameters
roomSize = [1,1]; % Room size, meters
gridSize = 5; % How many sensors per side
refDevices = 4; % How many references (must be same length as actualRefLocs)
trials = 20; % 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 RSS
dfunc = 'calcDError'; % Use for RSS
else
func = 'calcErrorTOA'; % Use for TOA
dfunc = '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;
% If C==1, then this simulation runs the _true_ MLE.
% If C==exp( 0.5* (log(10)/10 *sigmaOverN)^2), then this runs a
% bias-corrected (pseudo-) MLE.
% C = exp( 0.5* (log(10)/10 *sigmaOverN)^2);
C = 1;
else
sigma_d = 0.2; % Use for TOA
end
for trial = 1:trials,
if measMethod == 'R';
%| 3.0 Generate a random set of RSS-based distance measurements. When RSS
%| is expressed in dB, errors are Gaussian. Here, dhat is an interim
%| variable which has units of distance, and represents an estimate for
%| the range. It is correctly randomly generated as follows:
dhat = actualDist.*10.^(sigmaOverN/10 .*symrandn(totalDevices))./C;
else
%| 3.1 Generate a set of TOA measurements, which are Gaussian around the
%| true value with variance sigma_d.
dhat = actualDist + sigma_d .* symrandn(totalDevices);
end
%| 4. Make an initial guess of the coordinates.
blindLocs0 = [xBlind, yBlind]; % Use the true coordinates (unrealistic but best case)
%| 5. Find optimum locations of neurfons (fixed and relative)
funcEvals = 0; dfuncEvals = 0;
[coordsMLE, iter, errorMin] = frprmn(blindLocs0, ftol, func, dfunc, 0);
disp(sprintf('%d: Function / Deriv. evals: %d / %d.', trial, funcEvals, dfuncEvals));
%| 6. Save the resulting estimated coords
coordEsts(trial, 1:blindCoords) = coordsMLE;
end % for trial
estMean = 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,
figure
for i=1:blindDevices,
clf
plot(coordEsts(:,i), coordEsts(:,blindDevices+i),'.', ...
estMean(i), estMean(blindDevices+i), 'ro')
hold on
set(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
% Calculate and plot CRB vs. estimator performance.
figure; clf;
if measMethod == 'R';
[locstdCRB, coordCRB] = calcLocalizationCRB('R', [xBlind, actualRefLocs(:,1)'], ...
[yBlind, actualRefLocs(:,2)'], blindDevices, totalDevices, sigmaOverN);
else
[locstdCRB, coordCRB] = calcLocalizationCRB('T', [xBlind, actualRefLocs(:,1)'], ...
[yBlind, actualRefLocs(:,2)'], blindDevices, totalDevices, sigma_d);
end
for i=1:blindDevices,
hold on
R = cov(coordEsts(:,i), coordEsts(:,blindDevices+i));
drawOval(estMean(i), estMean(blindDevices+i), R, 'k-','v', 8, 0, 1);
R_CRB = coordCRB([i, i+blindDevices],[i, i+blindDevices]);
drawOval(xBlind(i), yBlind(i), R_CRB, 'r--','.',20, 0, 1);
end
set(gca,'xlim',[-0.2 1.2])
set(gca,'ylim',[-0.2 1.2])
set(gca,'FontSize',18)
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;
% Use for comparison
RMS_est_Std = sqrt(mean(locStd.^2))
RMS_crb_Std = sqrt(mean(locstdCRB.^2))
Ⅲ TOA/TDOA/RTOF三种方法区别
测量方法区别。
基于TOF的定位方法与基于TOA的定位方法在本质上是相同的,而TOF测距不依赖基站与标签的时间同步,故没有时钟同步偏差带来的误差,但TOF测距方法的时间取决于时钟精度,时钟偏移会带来误差。为了减少时钟偏移量造成的测距误差,通常采用正反两个方向的测量方法,即远端基站发送测距信息,标签接收测距信息并回复,然后再由标签发起测距信息,远端基站回复,通过求取飞行时间平均值,减少两者之间的时间偏移,从而提高测距精度。基于TDOA的定位方法又称为双曲线定位,其原理是通过测量UWB信号从标签到两个基站之间传播时间的差值,得到标签到两个基站之间的固定距离差。TDOA算法是对TOA算法的改进,它并不是直接利用信号到达时间,而是利用多个基站接收到信号的时间差来确定移动目标的位置。因此与TOA相比并不需要加入专门的时间戳来进行时钟同步,定位精度相对有所提高。
Ⅳ 急,谁有MUSIC算法同时估计DOA,TOA的源码或者只估计TOA的源码也可以。。。
我只有估计DOA的你要吗?
%clc;
echo off
M=6;%天线个数
d=0.5;
k=2*pi;
kd=k*d;
K=100;%有限个采样的二进制walsh码幅度为1
D=3;%信号数
th=[-5/180*pi,5/180*pi,20/180*pi];
s=sign(randn(D,K));%信号的时间采样
sig2=0.1;
n=sqrt(sig2)*randn(M,K);%噪声的时间采样
theta=-pi/6:0.01:pi/6;
A=[];
a1=[];
a2=[];
a3=[];
for ii=1:M
a1=[a1;exp(j*(ii-1)*kd.*sin(th(1)))];
a2=[a2;exp(j*(ii-1)*kd.*sin(th(2)))];
a3=[a3;exp(j*(ii-1)*kd.*sin(th(3)))];
end
A=[a1,a2,a3];
%randn('state',0);
Rss=s*s'/K
rank(Rss)
Rnn=n*n'/K;
Rns=n*s'/K;
Rsn=s*n'/K;
Rxx=A*Rss*A'+A*Rsn+Rns*A'+Rnn;
[V,Dia]=eig(Rxx);
[Y,Index]=sort(diag(Dia));
EN=V(:,Index(1:M-D));
for jj=1:18000
theta(jj)=-pi/2+jj/18000*pi;
a=[];
for kk=1:M
a=[a;exp(j*(kk-1)*kd*sin(theta(jj)))];
end
PB(jj)=abs(real(1/abs(a'*EN*EN'*a)));
end
PB_dB =10*log10(PB);
plot(theta/pi*180,PB_dB,'r');
grid on;
xlabel('Angle')
ylabel('|P(\theta)| (dB)');
title([' 使用时间平均的Music伪谱 ']);
[max,index]=maximun(PB,D);
eth=-90+index/100;
disp(['MUSIC法(相关信号):']);
disp(['1,到达角估计:']);
disp([blanks(10),'d=',num2str(d),'lambda']);
disp([blanks(10),'理论值值为: theta_1 =',num2str(th(1)/pi*180),'° ,','theta_2 =',num2str(th(2)/pi*180),'° ,','theta_3 =',num2str(th(3)/pi*180),'°']);
disp([blanks(10),'仿真估计值为:theta_1 xxzxx=',num2str(eth(1)),'°,','theta_2 =',num2str(eth(2)),' ,','theta_3 =',num2str(eth(3)),'°']);
disp([blanks(10),'偏差为: ',num2str(abs(eth(1)-th(1)/pi*180)),'° , ',num2str(abs(eth(2)-th(2)/pi*180)),'° , ',num2str(abs(eth(3)-th(3)/pi*180)),'°']);
disp(['2,信号数目估计:']);
disp([blanks(10),'理论值值为: D =',num2str(D)]);
[V_s,Dia_s]=eig(Rss);
disp([blanks(10),'仿真估计值为:ED =',num2str(length(diag(Dia_s)))]);
Ⅳ uwb测距的ds-twr算法精度可以达到多少
ds-twr算法成为双面双向测距,是基于TOA算法进行测距的,误差大概在0.3-0.5m
Ⅵ TOA TDOA RTOF的区别
我发现这个website,它解释了这种差异。但是因为英语不是我的第一语言,所以我不确定我是否理解正确
据我了解,ToA:设备(例如)发送带时间戳的信号。我知道无线电信号有多快,因此可以计算到达基站的时间与传输中的时间戳。 TDoA:设备向多个基站发送信号。那些电台有一个同步时钟。现在距离是根据两个基站到达时间之间的差值来计算的
TOA(Time of Arrival)即到达时间定位法。TDOA(Time Difference of Arrival)即到达时间差定位法。两者都是基于电波传播时间的定位方法。需要同时有三个位置已知的基站来协助定位。TOA基本原理是得到3个达到时间后,可以算出设备到三个基站的距离,然后根据几何只是建立方程组并求解,从而求得Location值。TDOA则不立刻求解距离,而是先计算时间差,然后通过一些巧妙的数学算法建立方程组并求解,从而得到Location值。由于TOA计算完全依赖于时间,对系统的时间同步要求很高,任何很小的时间误差都会被放大很多倍,同时由于多径效应的影响又会带来很大的误差,因而单纯的TOA在实际中应用很少。DTOA由于其中巧妙设计的求差过程会抵消其中很大一部分的时间误差和多径效应带来的误差,因而可以大大提高定位的精确度。由于DTOA对网络要求相对较低,并且精度较高,因而目前已经成为研究的热点。
Ⅶ 手机卡从手机上取下来还可以定位吗
手机卡从手机上取下来也是可以定位的。
手机连接上了WiFi是可以定位的。手机定位,主要包括信号方向定位、信号传播定位、手机 GPS 定位以及GPS
辅助定位几种。手机定位是一种移动位置服务系统,主要利用电信移动的运营商,在网络数据中获得相应的数据位置信息。
并在电子地图中显示出来,是一种增值业务。其原理主要为:移动电话在使用过程中测量不同的导频信号,得到相应的TOA,根据最终的测量结果得出相应的坐标,利用三角公式算法,计算出需要移动的位置。
(7)toa算法扩展阅读:
手机定位的介绍如下:
一个手机能够接打电话、收发短信,说明该手机能与附近基站发起交互,收发信号。特别地,对于智能手机,还可以通过系统的接口得到基站ID。
正常情况下,每个基站ID是全球唯一的,这样如果扫到了某个基站ID,又知道该基站的位置,便能粗略估计设备的位置。做出这个推测的前提就是一个基站的信号发射范围是有限的,正常的手机,不可能在相距这个基站很远的时候,还收到这个基站的信号。
Ⅷ 电信基站定位API中的sid,nid,bid 分别代表什么含义
SID是系统识别码,每个地级市只有一个。
NID是网络识别码,由各本地网管理,也就是由地级分公司分配。每个地级市可能有一到三个。
BID表示的是网络中的某一个小区,可以理解为基站。
Ⅸ 室内定位实现原理是什么
室内定位原理有几种:
蓝牙、WiFi类的一般是三角定位法,类似天上卫星定位,4个蓝牙基站可以立体定位一个点;
UWB定位最简系统演示套件
UWB应用UWB定位主要应用场景有:电子围栏、FOLLOW ME、机器人定位、工厂人员/物资定位、监狱犯人定位、养老院老人定位、隧道/管廊施工人员定位、发电站定位等需要使用厘米级高精度室内定位信息的应用。
UWB超宽带室内定位整体架构:
UWB定位系统由UWB基站,UWB标签,UWB定位引擎和终端显示器构成。