Sampling with Halton Points on n-Sphere

Post on 14-Jun-2015

627 views 4 download

Tags:

Transcript of Sampling with Halton Points on n-Sphere

Sampling with Halton Points on n-Sphere

Wai-Shing Luk1

1School of MicroelectronicsFudan University

April 6, 2014

Agenda

Abstract

Motivation and Applications

Review of Low Discrepancy SequenceVan der Corput sequence on [0; 1]Halton sequence on [0; 1]Halton sequence on [0; 1]n

Unit Circle S1

Unit Sphere S2

Sphere Sn and SO(3)

Our approach

Numerical Experiments

Conclusions

Agenda

Abstract

Motivation and Applications

Review of Low Discrepancy SequenceVan der Corput sequence on [0; 1]Halton sequence on [0; 1]Halton sequence on [0; 1]n

Unit Circle S1

Unit Sphere S2

Sphere Sn and SO(3)

Our approach

Numerical Experiments

Conclusions

Abstract

I Sampling on n-sphere (Sn) has a wide range ofapplications, such as:

I Spherical coding in MIMO wireless communicationI Multivariate empirical mode decompositionI Filter bank design

I We propose a simple yet effective method which:I Utilizes low-discrepancy sequenceI Contains only 10 lines of MATLAB code in our

implementation!I Allow incremental generation.

I Numerical results show that the proposed methodoutperforms the randomly generated sequences and otherproposed methods.

Agenda

Abstract

Motivation and Applications

Review of Low Discrepancy SequenceVan der Corput sequence on [0; 1]Halton sequence on [0; 1]Halton sequence on [0; 1]n

Unit Circle S1

Unit Sphere S2

Sphere Sn and SO(3)

Our approach

Numerical Experiments

Conclusions

Problem Formulation

Desirable properties of samples over Sn

I UniformI DeterministicI Incremental

I The uniformity measures are optimized with every newpoint.

I Reason: in some applications, it is unknown how manypoints are needed to solve the problem in advance

Motivation

I The topic has been well studied for sphere in 3D, i.e. n = 2I Yet it is still unknown how to generate for n > 2.I Potential applications (for n > 2):

I Robotic Motion Planning (S3 and SO(3)) [YJLM10]I Spherical coding in MIMO wireless communication [UL06]:

I Cookbook for Unitary matricesI A code word = a point in Sn

I Multivariate empirical mode decomposition [RM10]I Filter bank design [M+11]

Halton Sequence on Sn

I Halton sequence on S2 has been well studied [CF97] byusing cylindrical coordinates.

I Yet it is still little known for Sn where n > 2.I Note: The generalization of cylindrical coordinates does

NOT work in higher dimensions.

Agenda

Abstract

Motivation and Applications

Review of Low Discrepancy SequenceVan der Corput sequence on [0; 1]Halton sequence on [0; 1]Halton sequence on [0; 1]n

Unit Circle S1

Unit Sphere S2

Sphere Sn and SO(3)

Our approach

Numerical Experiments

Conclusions

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Basic: Van der Corput sequence

I Generate a low discrepancy sequence over [0; 1]I Denote vd(k ; b) as a Van der Corput sequence of k points,

where b is the base of a prime number.I MATLAB source code is available at http:

//www.mathworks.com/matlabcentral/fileexchange/15354-generate-a-van-der-corput-sequence

Example

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Square [0; 1]� [0; 1]

Halton sequence: using 2Van der Corput sequenceswith different bases.

Example[x ; y ] = [vd(k ; 2); vd(k ; 3)]

Unit Hypercube [0; 1]n

I Generally we can generate Halton sequence in a unithypercube [0; 1]n :

[x1; x2; : : : ; xn ] = [vd(k ; b1); vd(k ; b2); : : : ; vd(k ; bn)]

I A wide range of applications on Quasi-Monte CarloMethods (QMC).

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Circle S 1

Can be generated by mapping theVan der Corput sequence to [0; 2�]

I � = 2� � vd(k ; b)I [x ; y ] = [cos �; sin �]

Unit Sphere S 2

Has been applied for computergraphic applications [WLH97]

I [z ; x ; y ]= [cos �; sin � cos'; sin � sin']= [z ;

p1� z 2 cos';

p1� z 2 sin']

I ' = 2� � vd(k ; b1) % map to[0; 2�]

I z = 2 � vd(k ; b2)� 1 % map to[�1; 1]

Sphere S 3 and SO(3)

I Deterministic point setsI Optimal grid point sets for S3, SO(3) [Lubotzky, Phillips,

Sarnak 86] [Mitchell 07]I No Halton sequences so far to the best of our knowledge

Agenda

Abstract

Motivation and Applications

Review of Low Discrepancy SequenceVan der Corput sequence on [0; 1]Halton sequence on [0; 1]Halton sequence on [0; 1]n

Unit Circle S1

Unit Sphere S2

Sphere Sn and SO(3)

Our approach

Numerical Experiments

Conclusions

SO(3) or S 3 Hopf Coordinates

I Hopf coordinates (cf. [YJLM10])I x1 = cos(�=2) cos( =2)I x2 = cos(�=2) sin( =2)I x3 = sin(�=2) cos('+ =2)I x4 = sin(�=2) sin('+ =2)

I S3 is a principal circle bundleover the S2

Hopf Coordinates for SO(3) or S 3

Similar to the Halton sequence generation on S2, we performthe mapping:

I ' = 2� � vd(k ; b1) % map to [0; 2�]I = 2� � vd(k ; b2) % map to [0; 2�] for SO(3), orI = 4� � vd(k ; b2) % map to [0; 4�] for S3

I z = 2 � vd(k ; b3)� 1 % map to [�1; 1]I � = cos�1 z

10 Lines of MATLAB Code

1 function[s] = sphere3_hopf(k,b)2 % sphere3_hopf Halton sequence3 varphi = 2*pi*vdcorput(k,b(1)); % map to [0, 2*pi]4 psi = 4*pi*vdcorput(k,b(2)); % map to [0, 4*pi]5 z = 2* vdcorput(k,b(3)) - 1; % map to [-1, 1]6 theta = acos(z);7 cos_eta = cos(theta /2);8 sin_eta = sin(theta /2);9 s = [cos_eta .* cos(psi/2), ...

10 cos_eta .* sin(psi/2), ...11 sin_eta .* cos(varphi + psi/2), ...12 sin_eta .* sin(varphi + psi /2)];

3-sphere

I Polar coordinates:I x0 = cos �3I x1 = sin �3 cos �2I x2 = sin �3 sin �2 cos �1I x3 = sin �3 sin �2 sin �1

n-sphere

I Polar coordinates:I x0 = cos �nI x1 = sin �n cos �n�1I x2 = sin �n sin �n�1 cos �n�2I x3 = sin �n sin �n�1 sin �n�2 cos �n�3I � � �I xn�1 = sin �n sin �n�1 sin �n�2 � � � cos �1I xn = sin �n sin �n�1 sin �n�2 � � � sin �1

How to Generate the Point Set

I p0 = [cos �1; sin �1] where �1 = 2� � vd(k ; b1)I Let fj (�) =

Rsinj �d�, where � 2 (0; �).

Note: fj (�) is a monotonic increasing function in (0; �)I Map vd(k ; bj ) uniformly to fj (�):tj = fj (0) + (fj (�)� fj (0))vd(k ; bj )

I Let �j = f �1j (tj )I Define pn recursively as:pn = [cos �n ; sin �n � pn�1]

S 3 projected on four different spheres

Agenda

Abstract

Motivation and Applications

Review of Low Discrepancy SequenceVan der Corput sequence on [0; 1]Halton sequence on [0; 1]Halton sequence on [0; 1]n

Unit Circle S1

Unit Sphere S2

Sphere Sn and SO(3)

Our approach

Numerical Experiments

Conclusions

Testing the Correctness

I Compare the dispersion with the random point-setI Construct the convex hull for each point-setI Dispersion roughly measured by the difference of the

maximum distance and the minimum distance betweenevery two neighbour points:

maxa2N (b)

fD(a ; b)g � mina2N (b)

fD(a ; b)g

where D(a ; b) =p1� aTb

Random sequences

I To generate random points on Sn , spherical symmetry ofthe multidimensional Gaussian density function can beexploited.

I Then the normalized vector (xi=kxik) is uniformlydistributed over the hypersphere Sn . [Fishman, G. F.(1996)]

Convex Hull with �400 points

Left: our, right: random

Results for S 3

Results for S 4

Agenda

Abstract

Motivation and Applications

Review of Low Discrepancy SequenceVan der Corput sequence on [0; 1]Halton sequence on [0; 1]Halton sequence on [0; 1]n

Unit Circle S1

Unit Sphere S2

Sphere Sn and SO(3)

Our approach

Numerical Experiments

Conclusions

Conclusions

I Proposed method generates low-discrepancy point-set innearly linear time

I The result outperforms the corresponding randompoint-set, especially when the number of points is small

I The MATLAB source code is available in public (or uponrequest)

References I

[CF97] Jianjun Cui and Willi Freeden, Equidistribution on the sphere, SIAMJournal on Scientific Computing 18 (1997), no. 2, 595–609.

[M+11] DP Mandic et al., Filter bank property of multivariate empirical modedecomposition, Signal Processing, IEEE Transactions on 59 (2011),no. 5, 2421–2426.

[RM10] Naveed Rehman and Danilo P Mandic, Multivariate empirical modedecomposition, Proceedings of the Royal Society A: Mathematical,Physical and Engineering Science 466 (2010), no. 2117, 1291–1302.

[UL06] Zoran Utkovski and Juergen Lindner, On the construction ofnon-coherent space time codes from high-dimensional spherical codes,Spread Spectrum Techniques and Applications, 2006 IEEE NinthInternational Symposium on, IEEE, 2006, pp. 327–331.

[WLH97] Tien-Tsin Wong, Wai-Shing Luk, and Pheng-Ann Heng, Sampling withhammersley and halton points, Journal of graphics tools 2 (1997),no. 2, 9–24.

[YJLM10] Anna Yershova, Swati Jain, Steven M LaValle, and Julie C Mitchell,Generating uniform incremental grids on so (3) using the hopffibration, The International journal of robotics research 29 (2010),no. 7, 801–812.