This is where navigation should be.

PHERM - Periodized Hermite function

Usage

g=pherm(L,order);
g=pherm(L,order,tfr);
[g,D]=pherm(...);

Input parameters

L Length of vector.
order Order of Hermite function.
tfr ratio between time and frequency support.

Output parameters

g The periodized Hermite function

Description

pherm(L,order,tfr) computes samples of a periodized Hermite function of order order. order is counted from 0, so the zero'th order Hermite function is the Gaussian.

The parameter tfr determines the ratio between the effective support of g and the effective support of the DFT of g. If \(tfr>1\) then g has a wider support than the DFT of g.

pherm(L,order) does the same setting \(tfr=1\).

If order is a vector, pherm will return a matrix, where each column is a Hermite function with the corresponding order.

[g,D]=pherm(...) also returns the eigenvalues D of the Discrete Fourier Transform corresponding to the Hermite functions.

The returned functions are eigenvectors of the DFT. The Hermite functions are orthogonal to all other Hermite functions with a different eigenvalue, but eigenvectors with the same eigenvalue are not orthogonal (but see the flags below).

pherm takes the following flags at the end of the line of input arguments:

'accurate' Use a numerically very accurate that computes each Hermite function individually. This is the default.
'fast' Use a less accurate algorithm that calculates all the Hermite up to a given order at once.
'noorth' No orthonormalization of the Hermite functions. This is the default.
'polar' Orthonormalization of the Hermite functions using the polar decomposition orthonormalization method.
'qr' Orthonormalization of the Hermite functions using the Gram-Schmidt orthonormalization method (usign qr).

If you just need to compute a single Hermite function, there is no speed difference between the 'accurate' and 'fast' algorithm.

Examples:

The following plot shows the spectrograms of 4 Hermite functions of length 200 with order 1, 10, 100, and 190:

subplot(2,2,1);
sgram(pherm(200,1),'nf','tc','lin','nocolorbar'); axis('square');

subplot(2,2,2);
sgram(pherm(200,10),'nf','tc','lin','nocolorbar'); axis('square');

subplot(2,2,3);
sgram(pherm(200,100),'nf','tc','lin','nocolorbar'); axis('square');

subplot(2,2,4);
sgram(pherm(200,190),'nf','tc','lin','nocolorbar'); axis('square');