Inverse Fast Walsh-Hadamard transform

`y = ifwht(x)`

y = ifwht(x,n)

y = ifwht(x,n,ordering)

`y = ifwht(x)`

returns the coefficients of the inverse discrete
fast Walsh-Hadamard transform of the input `x`

. If `x`

is a matrix, the inverse fast Walsh-Hadamard transform is calculated on each column of
`x`

. The inverse fast Walsh-Hadamard transform operates only on
signals with length equal to a power of 2. If the length of `x`

is less
than a power of 2, its length is padded with zeros to the next greater power of two
before processing.

`y = ifwht(x,n)`

returns the `n`

-point inverse
discrete Walsh-Hadamard transform, where `n`

must be a power of 2.

`y = ifwht(x,n,ordering)`

specifies the ordering to use for the
returned inverse Walsh-Hadamard transform coefficients. To specify the ordering, you
must enter a value for the length `n`

or, to use the default behavior,
specify an empty vector (`[]`

) for `n`

. Valid values
for the ordering are the following:

Ordering | Description |
---|---|

`'sequency'` | Coefficients in order of ascending sequency value, where each row has an additional zero crossing. This is the default ordering. |

`'hadamard'` | Coefficients in normal Hadamard order. |

`'dyadic'` | Coefficients in Gray code order, where a single bit change occurs from one coefficient to the next. |

The inverse fast Walsh-Hadamard transform algorithm is similar to the Cooley-Tukey algorithm used for the inverse FFT. Both use a butterfly structure to determine the transform coefficients. See the references for details.

[1] Beauchamp, Kenneth G. *Applications of Walsh
and Related Functions: With an Introduction to Sequency Theory*.
London: Academic Press, 1984.

[2] Beer, Tom. “Walsh Transforms.”
*American Journal of Physics*. Vol. 49, 1981,
pp. 466–472.