This is where navigation should be.

PBSPLINE - Periodized B-spline

Usage

g=pbspline(L,order,a,...);
[g,nlen]=pbspline(L,order,a,...);

Input parameters

L Length of window.
order Order of B-spline.
a Time-shift parameter for partition of unity.

Output parameters

g Fractional B-spline.
nlen Number of non-zero elements in out.

Description

pbspline(L,order,a) computes a (slightly modified) B-spline of order order of total length L.

If shifted by the distance a, the returned function will form a partition of unity. The result is normalized such that the functions sum to \(1/\sqrt(a)\).

pbspline takes the following flags at the end of the input arguments:

'ed' Even discrete fractional spline. This is the default
'xd'
'flat' discrete fractional spline.

'stard''pointy discrete fractional spline''

'ec' Even fractional spline by sampling.
'xc'
'flat' fractional spline by sampling.

'starc''pointy fractional spline by sampling.''

'wp' Generate whole point centered splines. This is the default.
'hp' Generate half point centered splines.

The different types are accurately described in the referenced paper. Generally, the 'd' types of splines are very fast to compute, while the 'c' types are samplings of the continuous splines. The 'e' types coincides with the regular B-splines for integer orders. The 'x' types do not coincide, but generate Gabor frames with favorable frame bounds. The default type is 'ed' to guarantee fast computation and a familiar shape of the splines.

[out,nlen]=pbspline(...) will additionally compute the number of non-zero elements in out.

If \(nlen = L\), the function returned will be a periodization of a B-spline.

If \(nlen < L\), you can choose to remove the additional zeros by calling g=middlepad(g,nlen).

Additionally, pbspline accepts flags to normalize the output. Please see the help of setnorm. Default is to use 'peak' normalization.

References:

P. L. Søndergaard. Symmetric, discrete fractional splines and Gabor systems. preprint, 2008.