0% found this document useful (0 votes)
66 views5 pages

Sam Flip

This note describes implementing Equation (25) from the journal paper "Use of Flip Ambiguity Probabilities in Robust Sensor Network Localization". Sample values are taken for distances dAD, dBD, and dCD between 0 and the transmission range R at intervals of R/N. Integration is done using the MATLAB trapz function. The value of N is chosen as a tradeoff between accuracy and computational cost.

Uploaded by

rambabuk
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
66 views5 pages

Sam Flip

This note describes implementing Equation (25) from the journal paper "Use of Flip Ambiguity Probabilities in Robust Sensor Network Localization". Sample values are taken for distances dAD, dBD, and dCD between 0 and the transmission range R at intervals of R/N. Integration is done using the MATLAB trapz function. The value of N is chosen as a tradeoff between accuracy and computational cost.

Uploaded by

rambabuk
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Noname manuscript No.

(will be inserted by the editor)

Implementation of the Generic Equation (25) on the


Journal Paper ”Use of Flip Ambiguity Probabilities in
Robust Sensor Network Localization”

Anushiya A Kannan · Barış Fidan ·


Guoqiang Mao

Received: date / Accepted: date

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

0.1 Function Calculating IζXY

In order to implement Equation (25), it is necessary to calculate the three dimensional


indicator function IζXY which is set when there is a flipped realization with respect to
line XY .
This function uses two other functions to calculate the corresponding λC and to
AB
create an indicator function δZD which is set to one when RD 1
⊂ HC and reset
AB
to zero when RD1 ⊂ HC . These functions are explained in Subsections 0.2 and 0.3
respectively.
3

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.

1 function I zeta XY=Calculate I zeta XY(dXD,dYD,xy,R)


2 %True distance XY between points X and Y
3 XY=norm(xy(1,:)−xy(2,:));
4 %Create a 3D dimensional condition matrix indicating
5 %whether the circles centered at X and Y intersect.
6 CirclesIntersect=(abs(dXD−XY)≤dYD).*(dYD≤min(dXD+XY,R));
7 %Calculate Lambda C
8 Lamda C=CirclesIntersect.* Calculate lambda C(dYD,dXD,xy);
9 %create Indicator indicating whether
10 %Z and D are on same side of XY or not
11 sameSide=decide ZandDonSameSideOfXY(xy);
12 %make it a 3−dimensional matrix
13 ∆ ZD=sameSide.*ones(N,N,N);
14 I zeta XY=((∆ ZD. *Lamda C)≤dZD).*(dZD≤(min(∆ ZD *R+Lamda C,R)));
15 end

0.2 Function Calculating λC

From Proposition A.1 of the Journal paper, we know that

kp(C) − pAB
C (D)k + kp(C) − p
AB
(D)k
C
λC = (0.1)
2

In order to calculate, kp(C)−pAB


C (D)k and kp(C)−p
AB
(D)k, lets extract △p(A)p(B)p(C),
C
△p(A)p(B)pAB AB
C (D) and △p(A)p(B)pC (D) as shown in Figure 0.1. Since p(C) is a ver-

pCAB (D)

hD hC
p (C )
lD lC
p(A)
hC `hC p(B)
`

p(M ) p(N)
lC
lD hD

pCAB ( D)

Fig. 0.1 Closer look at △p(A)p(B)p(C), △p(A)p(B)pAB AB


C (D) and △p(A)p(B)pC (D) from
Figure A.1 of the Journal paper.

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

kp(A) − p(C)k2 − kp(B) − p(C)k2 + kp(A) − p(B)k2


lC = (0.2)
2kp(A) − p(B)k
4

Like wise, lD can be calculated as


2 2 2
kp(A) − pAB AB
C (D)k − kp(B) − pC (D)k + kp(A) − p(B)k
lD =
2kp(A) − p(B)k
2 2
dAD − dBD + kp(A) − p(B)k2
= (0.3)
2kp(A) − p(B)k

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

and substituted in (0.1) to calculate λC .


The matlab code of this function is as follows.

1 function lambda C=Calculate lambda C(dBD,dAD,xy)


2 AB=norm(xy(1,:)−xy(2,:));
3 BC=norm(xy(2,:)−xy(3,:));
4 AC=norm(xy(1,:)−xy(3,:));
5
6 %l C=(ACˆ2−BCˆ2+ABˆ2)/(2*AB);
7 %l D=(dAD.ˆ2−dBD.ˆ2+ABˆ2)/(2*AB);
8 l=((ACˆ2−BCˆ2)−(dAD.ˆ2−dBD.ˆ2))/(2*AB);
9
10 sABC=(AB+BC+AC)/2;
11 kABC=sqrt(sABC*(sABC−AB)*(sABC−BC)*(sABC−AC));
12
13 sABD=(dAD+dBD+AB)/2;
14 kABD=sqrt(sABD.*(sABD−AB).*(sABD−dBD).*(sABD−dAD));
15
16 %h C=2*kABC/AB;
17 %h D=2*kABD./AB;
18 h D1=2*(kABC−kABD)/AB;
19 h D2=2*(kABC+kABD)/AB;
20
21 CD1=sqrt(l.ˆ2+h D1.ˆ2);
22 CD2=sqrt(l.ˆ2+h D2.ˆ2);
23
24 lambda C=(x CD1+x CD2)/2;
25
26 clear AB BC AC l sABC kABC sABD kABD h D1 h D2 CD1 CD2;
27 end
5

0.3 Function Deciding Whether Z and D Are On Same Side Of XY

The is a simple matlab code of this function using cross product and checking the signs
to make a decision.

1 function sameSide=decide ZandDonSameSideOfXY(xy)


2 cZ = cross([xy(2,:)−xy(1,:) 0],[xy(3,:)−xy(1,:) 0]);
3 cD = cross([xy(2,:)−xy(1,:) 0],[xy(4,:)−xy(1,:) 0]);
4 if (sign(cZ(3))*sign(cD(3))==−1)
5 sameSide=0;
6 else %(sign(cZ(3))*sign(cD(3))==1)
7 sameSide=1;
8 end
9 end

You might also like