Sampling with Halton Points on n-Sphere
Wai-Shing Luk1
1School of Microelectronics
Fudan University
April 6, 2014
Agenda
Abstract
Motivation and Applications
Review of Low Discrepancy Sequence
Van 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 Sequence
Van 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
Sampling on n-sphere (Sn ) has a wide range of
applications, such as:
Spherical coding in MIMO wireless communication
Multivariate empirical mode decomposition
Filter bank design
We propose a simple yet effective method which:
Utilizes low-discrepancy sequence
Contains only 10 lines of MATLAB code in our
implementation!
Allow incremental generation.
Numerical results show that the proposed method
outperforms the randomly generated sequences and other
proposed methods.
Agenda
Abstract
Motivation and Applications
Review of Low Discrepancy Sequence
Van 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
Uniform
Deterministic
Incremental
The uniformity measures are optimized with every new
point.
Reason: in some applications, it is unknown how many
points are needed to solve the problem in advance
Motivation
The topic has been well studied for sphere in 3D, i.e. n = 2
Yet it is still unknown how to generate for n > 2.
Potential applications (for n > 2):
Robotic Motion Planning (S3
and SO(3)) [YJLM10]
Spherical coding in MIMO wireless communication [UL06]:
Cookbook for Unitary matrices
A code word = a point in Sn
Multivariate empirical mode decomposition [RM10]
Filter bank design [M+
11]
Halton Sequence on Sn
Halton sequence on S2 has been well studied [CF97] by
using cylindrical coordinates.
Yet it is still little known for Sn where n > 2.
Note: The generalization of cylindrical coordinates does
NOT work in higher dimensions.
Agenda
Abstract
Motivation and Applications
Review of Low Discrepancy Sequence
Van 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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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
Generate a low discrepancy sequence over [0; 1]
Denote vd(k; b) as a Van der Corput sequence of k points,
where b is the base of a prime number.
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 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Square [0; 1] ¢[0; 1]
Halton sequence: using 2
Van der Corput sequences
with different bases.
Example
[x; y] = [vd(k; 2); vd(k; 3)]
Unit Hypercube [0; 1]
n
Generally we can generate Halton sequence in a unit
hypercube [0; 1]n :
[x1; x2; : : : ; xn ] = [vd(k; b1); vd(k; b2); : : : ; vd(k; bn )]
A wide range of applications on Quasi-Monte Carlo
Methods (QMC).
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Circle S1
Can be generated by mapping the
Van der Corput sequence to [0; 2]
 = 2 ¡vd(k; b)
[x; y] = [cos ; sin ]
Unit Sphere S2
Has been applied for computer
graphic applications [WLH97]
[z; x; y]
= [cos ; sin  cos '; sin  sin ']
= [z;
p
1  z2 cos ';
p
1  z2 sin ']
' = 2 ¡vd(k; b1) % map to
[0; 2]
z = 2 ¡vd(k; b2)  1 % map to
[ 1; 1]
Sphere S3
and SO(3)
Deterministic point sets
Optimal grid point sets for S3
, SO(3) [Lubotzky, Phillips,
Sarnak 86] [Mitchell 07]
No Halton sequences so far to the best of our knowledge
Agenda
Abstract
Motivation and Applications
Review of Low Discrepancy Sequence
Van 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 S3
Hopf Coordinates
Hopf coordinates (cf. [YJLM10])
x1 = cos(=2) cos( =2)
x2 = cos(=2) sin( =2)
x3 = sin(=2) cos(' + =2)
x4 = sin(=2) sin(' + =2)
S3 is a principal circle bundle
over the S2
Hopf Coordinates for SO(3) or S3
Similar to the Halton sequence generation on S2, we perform
the mapping:
' = 2 ¡vd(k; b1) % map to [0; 2]
= 2 ¡vd(k; b2) % map to [0; 2] for SO(3), or
= 4 ¡vd(k; b2) % map to [0; 4] for S3
z = 2 ¡vd(k; b3)  1 % map to [ 1; 1]
 = cos 1 z
10 Lines of MATLAB Code
1 function[s] = sphere3_hopf (k,b)
2 % sphere3_hopf Halton sequence
3 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
Polar coordinates:
x0 = cos 3
x1 = sin 3 cos 2
x2 = sin 3 sin 2 cos 1
x3 = sin 3 sin 2 sin 1
n-sphere
Polar coordinates:
x0 = cos n
x1 = sin n cos n 1
x2 = sin n sin n 1 cos n 2
x3 = sin n sin n 1 sin n 2 cos n 3
¡¡¡
xn 1 = sin n sin n 1 sin n 2 ¡¡¡cos 1
xn = sin n sin n 1 sin n 2 ¡¡¡sin 1
How to Generate the Point Set
p0 = [cos 1; sin 1] where 1 = 2 ¡vd(k; b1)
Let fj () =
R
sinj
d, where  P (0; ).
Note: fj () is a monotonic increasing function in (0; )
Map vd(k; bj ) uniformly to fj ():
tj = fj (0) + (fj ()  fj (0))vd(k; bj )
Let j = f  1
j (tj )
Define pn recursively as:
pn = [cos n ; sin n ¡pn 1]
S3
projected on four different spheres
Agenda
Abstract
Motivation and Applications
Review of Low Discrepancy Sequence
Van 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
Compare the dispersion with the random point-set
Construct the convex hull for each point-set
Dispersion roughly measured by the difference of the
maximum distance and the minimum distance between
every two neighbour points:
max
aPx(b)
fD(a; b)g  min
aPx(b)
fD(a; b)g
where D(a; b) =
p
1  aTb
Random sequences
To generate random points on Sn , spherical symmetry of
the multidimensional Gaussian density function can be
exploited.
Then the normalized vector (xi =kxi k) is uniformly
distributed over the hypersphere Sn . [Fishman, G. F.
(1996)]
Convex Hull with %400 points
Left: our, right: random
Results for S3
Results for S4
Agenda
Abstract
Motivation and Applications
Review of Low Discrepancy Sequence
Van 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
Proposed method generates low-discrepancy point-set in
nearly linear time
The result outperforms the corresponding random
point-set, especially when the number of points is small
The MATLAB source code is available in public (or upon
request)
References I
[CF97] Jianjun Cui and Willi Freeden, Equidistribution on the sphere, SIAM
Journal on Scientific Computing 18 (1997), no. 2, 595–609.
[M+11] DP Mandic et al., Filter bank property of multivariate empirical mode
decomposition, Signal Processing, IEEE Transactions on 59 (2011),
no. 5, 2421–2426.
[RM10] Naveed Rehman and Danilo P Mandic, Multivariate empirical mode
decomposition, 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 of
non-coherent space time codes from high-dimensional spherical codes,
Spread Spectrum Techniques and Applications, 2006 IEEE Ninth
International Symposium on, IEEE, 2006, pp. 327–331.
[WLH97] Tien-Tsin Wong, Wai-Shing Luk, and Pheng-Ann Heng, Sampling with
hammersley 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 hopf
fibration, The International journal of robotics research 29 (2010),
no. 7, 801–812.

Sampling with Halton Points on n-Sphere

  • 1.
    Sampling with HaltonPoints on n-Sphere Wai-Shing Luk1 1School of Microelectronics Fudan University April 6, 2014
  • 2.
    Agenda Abstract Motivation and Applications Reviewof Low Discrepancy Sequence Van 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
  • 3.
    Agenda Abstract Motivation and Applications Reviewof Low Discrepancy Sequence Van 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
  • 4.
    Abstract Sampling on n-sphere(Sn ) has a wide range of applications, such as: Spherical coding in MIMO wireless communication Multivariate empirical mode decomposition Filter bank design We propose a simple yet effective method which: Utilizes low-discrepancy sequence Contains only 10 lines of MATLAB code in our implementation! Allow incremental generation. Numerical results show that the proposed method outperforms the randomly generated sequences and other proposed methods.
  • 5.
    Agenda Abstract Motivation and Applications Reviewof Low Discrepancy Sequence Van 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
  • 6.
    Problem Formulation Desirable propertiesof samples over Sn Uniform Deterministic Incremental The uniformity measures are optimized with every new point. Reason: in some applications, it is unknown how many points are needed to solve the problem in advance
  • 7.
    Motivation The topic hasbeen well studied for sphere in 3D, i.e. n = 2 Yet it is still unknown how to generate for n > 2. Potential applications (for n > 2): Robotic Motion Planning (S3 and SO(3)) [YJLM10] Spherical coding in MIMO wireless communication [UL06]: Cookbook for Unitary matrices A code word = a point in Sn Multivariate empirical mode decomposition [RM10] Filter bank design [M+ 11]
  • 8.
    Halton Sequence onSn Halton sequence on S2 has been well studied [CF97] by using cylindrical coordinates. Yet it is still little known for Sn where n > 2. Note: The generalization of cylindrical coordinates does NOT work in higher dimensions.
  • 9.
    Agenda Abstract Motivation and Applications Reviewof Low Discrepancy Sequence Van 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
  • 10.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 11.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 12.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 13.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 14.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 15.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 16.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 17.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 18.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 19.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 20.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 21.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 22.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 23.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 24.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 25.
    Basic: Van derCorput sequence Generate a low discrepancy sequence over [0; 1] Denote vd(k; b) as a Van der Corput sequence of k points, where b is the base of a prime number. MATLAB source code is available at http: //www.mathworks.com/matlabcentral/fileexchange/ 15354-generate-a-van-der-corput-sequence Example
  • 26.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 27.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 28.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 29.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 30.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 31.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 32.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 33.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 34.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 35.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 36.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 37.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 38.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 39.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 40.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 41.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 42.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 43.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 44.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 45.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 46.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 47.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 48.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 49.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 50.
    Unit Square [0;1] ¢[0; 1] Halton sequence: using 2 Van der Corput sequences with different bases. Example [x; y] = [vd(k; 2); vd(k; 3)]
  • 51.
    Unit Hypercube [0;1] n Generally we can generate Halton sequence in a unit hypercube [0; 1]n : [x1; x2; : : : ; xn ] = [vd(k; b1); vd(k; b2); : : : ; vd(k; bn )] A wide range of applications on Quasi-Monte Carlo Methods (QMC).
  • 52.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 53.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 54.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 55.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 56.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 57.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 58.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 59.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 60.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 61.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 62.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 63.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 64.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 65.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 66.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 67.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 68.
    Unit Circle S1 Canbe generated by mapping the Van der Corput sequence to [0; 2] = 2 ¡vd(k; b) [x; y] = [cos ; sin ]
  • 69.
    Unit Sphere S2 Hasbeen applied for computer graphic applications [WLH97] [z; x; y] = [cos ; sin cos '; sin sin '] = [z; p 1  z2 cos '; p 1  z2 sin '] ' = 2 ¡vd(k; b1) % map to [0; 2] z = 2 ¡vd(k; b2)  1 % map to [ 1; 1]
  • 70.
    Sphere S3 and SO(3) Deterministicpoint sets Optimal grid point sets for S3 , SO(3) [Lubotzky, Phillips, Sarnak 86] [Mitchell 07] No Halton sequences so far to the best of our knowledge
  • 71.
    Agenda Abstract Motivation and Applications Reviewof Low Discrepancy Sequence Van 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
  • 72.
    SO(3) or S3 HopfCoordinates Hopf coordinates (cf. [YJLM10]) x1 = cos(=2) cos( =2) x2 = cos(=2) sin( =2) x3 = sin(=2) cos(' + =2) x4 = sin(=2) sin(' + =2) S3 is a principal circle bundle over the S2
  • 73.
    Hopf Coordinates forSO(3) or S3 Similar to the Halton sequence generation on S2, we perform the mapping: ' = 2 ¡vd(k; b1) % map to [0; 2] = 2 ¡vd(k; b2) % map to [0; 2] for SO(3), or = 4 ¡vd(k; b2) % map to [0; 4] for S3 z = 2 ¡vd(k; b3)  1 % map to [ 1; 1] = cos 1 z
  • 74.
    10 Lines ofMATLAB Code 1 function[s] = sphere3_hopf (k,b) 2 % sphere3_hopf Halton sequence 3 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)];
  • 75.
    3-sphere Polar coordinates: x0 =cos 3 x1 = sin 3 cos 2 x2 = sin 3 sin 2 cos 1 x3 = sin 3 sin 2 sin 1
  • 76.
    n-sphere Polar coordinates: x0 =cos n x1 = sin n cos n 1 x2 = sin n sin n 1 cos n 2 x3 = sin n sin n 1 sin n 2 cos n 3 ¡¡¡ xn 1 = sin n sin n 1 sin n 2 ¡¡¡cos 1 xn = sin n sin n 1 sin n 2 ¡¡¡sin 1
  • 77.
    How to Generatethe Point Set p0 = [cos 1; sin 1] where 1 = 2 ¡vd(k; b1) Let fj () = R sinj d, where P (0; ). Note: fj () is a monotonic increasing function in (0; ) Map vd(k; bj ) uniformly to fj (): tj = fj (0) + (fj ()  fj (0))vd(k; bj ) Let j = f  1 j (tj ) Define pn recursively as: pn = [cos n ; sin n ¡pn 1]
  • 78.
    S3 projected on fourdifferent spheres
  • 79.
    Agenda Abstract Motivation and Applications Reviewof Low Discrepancy Sequence Van 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
  • 80.
    Testing the Correctness Comparethe dispersion with the random point-set Construct the convex hull for each point-set Dispersion roughly measured by the difference of the maximum distance and the minimum distance between every two neighbour points: max aPx(b) fD(a; b)g  min aPx(b) fD(a; b)g where D(a; b) = p 1  aTb
  • 81.
    Random sequences To generaterandom points on Sn , spherical symmetry of the multidimensional Gaussian density function can be exploited. Then the normalized vector (xi =kxi k) is uniformly distributed over the hypersphere Sn . [Fishman, G. F. (1996)]
  • 82.
    Convex Hull with%400 points Left: our, right: random
  • 83.
  • 84.
  • 85.
    Agenda Abstract Motivation and Applications Reviewof Low Discrepancy Sequence Van 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
  • 86.
    Conclusions Proposed method generateslow-discrepancy point-set in nearly linear time The result outperforms the corresponding random point-set, especially when the number of points is small The MATLAB source code is available in public (or upon request)
  • 87.
    References I [CF97] JianjunCui and Willi Freeden, Equidistribution on the sphere, SIAM Journal on Scientific Computing 18 (1997), no. 2, 595–609. [M+11] DP Mandic et al., Filter bank property of multivariate empirical mode decomposition, Signal Processing, IEEE Transactions on 59 (2011), no. 5, 2421–2426. [RM10] Naveed Rehman and Danilo P Mandic, Multivariate empirical mode decomposition, 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 of non-coherent space time codes from high-dimensional spherical codes, Spread Spectrum Techniques and Applications, 2006 IEEE Ninth International Symposium on, IEEE, 2006, pp. 327–331. [WLH97] Tien-Tsin Wong, Wai-Shing Luk, and Pheng-Ann Heng, Sampling with hammersley 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 hopf fibration, The International journal of robotics research 29 (2010), no. 7, 801–812.