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.