当前位置 - 股票行情交易網 - 裝修設計 - topnetwork

topnetwork

function X = Chan_3BS(MSP,R,Noise)

% Chan 算法,利用3BS對MS進行定位;

% CHAN_3BS:

% 參數說明:

% Noise: 測距誤差方差.

% R: 小區半徑.

% Also see: Chan_3BS.

% 參數檢測:

if nargout ~=1,

error('Too many output arguments!');

end

if nargin ~= 3,

error('input arguments error!');

end

% 算法開始

MS = R*MSP;

BS = R*NetworkTop(3);

% A矩陣:

X21 = BS(1,2) - BS(1,1);

X31 = BS(1,3) - BS(1,1);

Y21 = BS(2,2) - BS(2,1);

Y31 = BS(2,3) - BS(2,1);

A = inv([X21,Y21;X31,Y31]);

% B矩陣:

R1 = sqrt((BS(1,1) - MS(1))^2 + (BS(2,1) - MS(2))^2);

R2 = sqrt((BS(1,2) - MS(1))^2 + (BS(2,2) - MS(2))^2);

R3 = sqrt((BS(1,3) - MS(1))^2 + (BS(2,3) - MS(2))^2);

R21 = R2 - R1 + MeaNoise(Noise); % 需要加噪聲

R31 = R3 - R1 + MeaNoise(Noise);

B = [R21;R31];

% C矩陣:

K1 = BS(1,1)^2 + BS(2,1)^2;

K2 = BS(1,2)^2 + BS(2,2)^2;

K3 = BS(1,3)^2 + BS(2,3)^2;

C = 0.5*[R21^2 - K2 + K1; R31^2 - K3 + K1];

% 壹元二次方程的系數:

a = B'*A'*A*B - 1;

b = B'*A'*A*C + C'*A'*A*B;

c = C'*A'*A*C;

% 方程的兩個根:

root1 = abs((-b + sqrt(b^2 - 4*a*c))/(2*a));

root2 = abs((-b - sqrt(b^2 - 4*a*c))/(2*a));

% 檢驗方程的根:

if root1 < R,

EMS = -A*(B*root1 + C);

else

EMS = -A*(B*root2 + C);

end

% 輸出結果:

if nargout == 1,

X = EMS;

else

disp(EMS);

end