SO3Kernel.calcFourier edit page

Compute the Chebychev coefficients by gaussian quadrature rule.

Description

Extended explanation of the FFT-Based Quadrature Method:

Note that an SO3Kernel is a series of Chebychev polynomials of 2nd kind with even degree, i.e.

\[ \psi(x) = \sum_{m=0}^M a_{m} \cdot U_{2m}(x) \]

for \(x\in [-1,1]\). Moreover we have \(\psi \in L^2([-1,1],\,\sqrt{1-t^2})\). Often we substitute \(x=\cos\frac{\theta}{2}\) to obtain a kernel function that depends on the rotational angle \(\theta\).

In the following, we will deal not only with even degrees, but also with Chebyshev polynomials with odd degrees. Ultimately, however, the coefficients for the odd degrees will vanish. Therefore, for the moment, we will consider series of the form

\[ \psi(x) = \sum_{m=0}^{M-1} a_{m} \cdot U_{m}(x). \]

Since the Chebychev polynomials build an orthogonal basis w.r.t. the above scalar product, we obtain the coefficients \(a_m\) for \(m=0,\dots,M-1\) using

\[ a_m = \int_{-1}^1 \psi(x) \cdot U_{m}(x) \mathrm{d}x. \]

Substituting \(x=\cos\frac{\theta}{2}\) yields

\[ a_m = \int_0^{2\pi} \psi(\cos\frac{\theta}{2}) \cdot \sin\frac{\theta}{2} \cdot \sin\frac{(m+1)\theta}{2} \]

since \(U_{m}(\cos\frac{\theta}{2}) \, \sin\frac{\theta}{2} = \sin\frac{(m+1)\theta}{2}\).

Note that the gaussian quadrature rule with quadrature weights \(\omega_j = \frac{2}{M}\) and quadrature notes \(\theta_j = \frac{(2j+1)\pi}{M}\) allows us to exactly integrate

\[ \int_0^{2\pi} \sin\frac{(m+1)\theta}{2} \cdot \sin\frac{(n+1)\theta}{2} \mathrm{d}\theta = \delta_{m,n} \]

for \(0 \leq n,m \leq M-1\).

Hence, if \(\psi(x)\) is bandlimited with bandwidth \(M-1\), then we can compute the coefficients \(a_m\) by gaussian quadrature formula, i.e.

\[ a_m = \sum_{j=0}^{M-1} \left( \frac{2}{M} \cdot \psi(\cos\frac{\theta_j}{2}) \cdot \sin\frac{\theta_j}{2} \right) \cdot \sin\frac{(m+1)\theta_j}{2}. \]

We precompute the coefficients \(c_j = \sqrt{\frac{2}{M}} \cdot \psi(\cos\frac{\theta_j}{2}) \cdot \sin\frac{\theta_j}{2}\). Then the above linear system reads as

\[ a_m = \sqrt{\frac{2}{M}} \sum_{j=0}^{M-1} c_j \cdot \sin\frac{(m+1)(2j+1)\pi}{2M},\]

which is the discrete sine transform DST-II. This can be computed efficiently by an FFT-based algorithm, see [1].

[1] - G.Plonka, D.Potts, G.Steidl, M.Tasche: Numerical Fourier Analysis, Birkhäuser (Cham), 2018

Syntax

A = calcFourier(psi,L)
A = calcFourier(psi,L,'GaussKronrod')
A = calcFourier(psi,L,maxAngle,'GaussKronrod')

Input

psi SO3Kernel
L bandwidth
maxAngle double

Output

A double (Chebychev coefficient vector)

Options

'GaussKronrod' Use Gauss-Kronrod quadrature

Citing this page. This page is part of the documentation of MTEX, a free and open source MATLAB toolbox for analyzing and modeling crystallographic textures. It was written by The MTEX Developers and is published at https://mtex-toolbox.github.io/SO3Kernel.calcFourier.html. If you use MTEX, or reuse text or figures from this page, in your research, please cite

F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63

BibTeX
@article{bachmann2010mtex,
  author  = {F. Bachmann and R. Hielscher and H. Schaeben},
  title   = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
  journal = {Solid State Phenomena},
  volume  = {160},
  pages   = {63-68},
  year    = {2010},
  doi     = {10.4028/www.scientific.net/SSP.160.63},
  url     = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}

Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.