Sampling with Halton Points on n-Sphere Wai-Shing Luk 1 1 School of Microelectronics Fudan University April 6, 2014
Jun 14, 2015
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.