Sam Flip
Sam Flip
This note describes the implementation methodology of Equation (25) of the Jounal
Paper ”Use of Flip Ambiguity Probabilities in Robust Sensor Network Localization”.
Sample values of each of dAD , dBD and dCD are taken to span the distance range
[0, R] at a step size of R/N . Integration is implemented using the MATLAB function
trapz. In choice of N there is a trade-off between accuracy and computational cost. In
our case, N was chosen to be 100.
1 function NumericalCalculationOfFlip(xy,R,N,sigma)
2 %xy − true coordinates of A,B,C and D
3 %transmission range R
4 %Number of steps N
5 %Standard deviation of Gaussian noise sigma
6
7 % create distance matrix containing possible values
8 % x axis representing measured distance dAD,
9 % y axis representing measured distance dBD, and
10 % z axis representing measured distance dCD
11 Delta=R/N;
12 d=Delta:Delta:R;
13 for i=1:N,
The work was supported by National ICT Australia-NICTA. NICTA is funded by the Aus-
tralian Government as represented by the Department of Broadband, Communications and the
Digital Economy and the Australian Research Council through the ICT Centre of Excellence
program.
Anushiya A Kannan
School of Electrical and Information Engineering, University of Sydney, NSW 2006, Australia.
Tel.: +61-2-88122431
Fax: +61-2-88122431
E-mail: [email protected]
Barış Fidan
University of Waterloo, Ontario, Canada
E-mail: [email protected]
Guoqiang Mao
The University of Sydney and National ICT Australia
E-mail: [email protected]
2
14 dAD(:,:,i)=ones(N,1)*d;
15 dBD(:,:,i)=d'*ones(1,N);
16 dCD(:,:,i)=i*Delta*ones(N,N);
17 end
18
19 %Create Identity Matrices
20 I zeta AB=Calculate I zeta XY(dAD,dBD,xy,R);
21
22 xy changedOrder=[xy(2,:);xy(3,:);xy(1,:);xy(4,:)];
23 I zeta BC=Calculate I zeta XY(dBD,dCD,xy changedOrder,R);
24
25 xy changedOrder=[xy(3,:);xy(1,:);xy(2,:);xy(4,:)];
26 I zeta AC=Calculate I zeta XY(dAD,dCD,xy changedOrder,R)
27 % Define normalised Gaussian transfer functions
28 measured dCD=shiftdim((dCD(1,1,:)),2)';
29 CD=norm(xy(3,:)−xy(4,:));
30 TF=1/(sigma*sqrt(2*pi))*exp(−(dCD−CD).ˆ2/(2*sigmaˆ2));
31 NF=cdf('normal',R,CD,sigma)−cdf('normal',0,CD,sigma);
32 YCD=TF/NF; clear TF NF
33
34 measured dBD=dBD(:,1,1)';
35 BD=norm(xy(2,:)−xy(4,:));
36 TF=1/(sigma*sqrt(2*pi))*exp(−(dBD(:,:,1)−BD).ˆ2/(2*sigmaˆ2));
37 NF=cdf('normal',R,BD,sigma)−cdf('normal',0,BD,sigma);
38 YBD=TF/NF;
39
40 measured dAD=dAD(1,:,1);
41 AD=norm(xy(1,:)−xy(4,:));
42 TF=1/(sigma*sqrt(2*pi))*exp(−(measured dAD−AD).ˆ2/(2*sigmaˆ2));
43 NF=cdf('normal',R,AD,sigma)−cdf('normal',0,AD,sigma);
44 YAD=TF/NF;
45
46 % Calculate the analytical probability P(zeta AB BC AC AD/ABCD)
47 Y=YCD.* I AB.* I BC.* I AC;
48 for i=1:N,
49 for j=1:N,
50 YC(i,j)=trapz(measured dCD,shiftdim((Y(i,j,:)),2)');
51 end
52 end
53 Y=YBD.*YC;
54 for i=1:N,
55 YB(1,i)=trapz(measured dBD,Y(:,i)');
56 end
57 Y=YAD.*YB;
58 P zeta AB BC AC ABCD=trapz(measured dAD,Y);
59 end
This function ignores the negligible flips (See Section 6 of Journal Paper) by not
calculating λC for the cases of non-intersecting circles C(p(A), dAD ), C(p(B), dBD ) and
setting them to be zero.
The matlab code of this function is as follows.
kp(C) − pAB
C (D)k + kp(C) − p
AB
(D)k
C
λC = (0.1)
2
pCAB (D)
hD hC
p (C )
lD lC
p(A)
hC `hC p(B)
`
p(M ) p(N)
lC
lD hD
pCAB ( D)
tex in both right angled triangles p(A)p(M )p(C) and p(B)p(M )p(C), using pythagoras
theorem lC can be calculated as
Since hC is the height of the △p(A)p(B)p(C) and hD is the height of the △p(A)p(B)pAB
C (D)
AB
(equivalently can consider △p(A)p(B)pC (D) as well), they can be written as
2K△p(A)p(B)p(C)
hC = (0.4)
kp(A) − p(B)k
2K△p(A)p(B)pAB (D)
C
hD = (0.5)
kp(A) − p(B)k
where K△p(A)p(B)p(C) and K△p(A)p(B)pAB (D) are the area of △p(A)p(B)p(C) and
C
△p(A)p(B)pAB
C (D) respectively and can be easily calculated using Heron’s formula.
Thus kp(C) − pAB
C (D)k and kp(C) − p
AB
(D)k can be calculated as
C
kp(C) − pAB
p
C (D)k = (lD − lC )2 + (hD − hC )2
kp(C) − pAB
p
C
(D)k = (lD − lC )2 + (hD + hC )2
The is a simple matlab code of this function using cross product and checking the signs
to make a decision.