### 32.2 Initialization

The `gsl_wavelet` structure contains the filter coefficients defining the wavelet and any associated offset parameters.

Function: gsl_wavelet * gsl_wavelet_alloc (const gsl_wavelet_type * T, size_t k)

  This function allocates and initializes a wavelet object of type T. The parameter k selects the specific member of the wavelet family. A null pointer is returned if insufficient memory is available or if a unsupported member is selected.

The following wavelet types are implemented:

Wavelet: gsl_wavelet_daubechies
Wavelet: gsl_wavelet_daubechies_centered

  This is the Daubechies wavelet family of maximum phase with k/2 vanishing moments. The implemented wavelets are k=4, 6, …, 20, with k even.

Wavelet: gsl_wavelet_haar
Wavelet: gsl_wavelet_haar_centered

  This is the Haar wavelet. The only valid choice of k for the Haar wavelet is k=2.

Wavelet: gsl_wavelet_bspline
Wavelet: gsl_wavelet_bspline_centered

  This is the biorthogonal B-spline wavelet family of order (i,j). The implemented values of k = 100*i + j are 103, 105, 202, 204, 206, 208, 301, 303, 305 307, 309.

The centered forms of the wavelets align the coefficients of the various sub-bands on edges. Thus the resulting visualization of the coefficients of the wavelet transform in the phase plane is easier to understand.

Function: const char * gsl_wavelet_name (const gsl_wavelet * w)

  This function returns a pointer to the name of the wavelet family for w.

Function: void gsl_wavelet_free (gsl_wavelet * w)

  This function frees the wavelet object w.

The `gsl_wavelet_workspace` structure contains scratch space of the same size as the input data and is used to hold intermediate results during the transform.

Function: gsl_wavelet_workspace * gsl_wavelet_workspace_alloc (size_t n)

  This function allocates a workspace for the discrete wavelet transform. To perform a one-dimensional transform on n elements, a workspace of size n must be provided. For two-dimensional transforms of n-by-n matrices it is sufficient to allocate a workspace of size n, since the transform operates on individual rows and columns. A null pointer is returned if insufficient memory is available.

Function: void gsl_wavelet_workspace_free (gsl_wavelet_workspace * work)

  This function frees the allocated workspace work.