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定位引擎和終端顯示器構成。