You are here : matlabSignal Processingfwht

# fwht() - Signal Processing

```y = fwht(x) returns the coefficients of
the discrete Walsh-Hadamard transform of the input x.
If x is a matrix, the FWHT is calculated on each
column of x. The FWHT 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 = fwht(x,n) returns the n-point
discrete Walsh-Hadamard transform, where n must
be a power of 2. x and n must
be the same length. If x is longer than n, x is
truncated; if x is shorter than n, x is
padded with zeros.y = fwht(x,n,ordering) specifies the ordering
to use for the returned 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
strings:OrderingDescription
'sequency'Coefficients in order of increasing sequency value, where each
row has an additional zero crossing. This is the default ordering.
'dyadic'Coefficients in Gray code order, where a single bit change
occurs from one coefficient to the next.
Walsh functions and ordering, see Walsh-Hadamard Transform.```

### Syntax

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

### Example

```Walsh-Hadamard Transform of a SignalOpen This Example
This example shows a simple input signal and its Walsh-Hadamard transform.
x = [19 -1 11 -9 -7 13 -15 5];
y = fwht(x)

y =

2     3     0     4     0     0    10     0

y contains nonzero values at locations 0, 1, 3, and 6. Form the Walsh functions with the sequency values 0, 1, 3, and 6 to recreate x.w0 = [1 1 1 1 1 1 1 1];
w1 = [1 1 1 1 -1 -1 -1 -1];
w3 = [1 1 -1 -1 1 1 -1 -1];
w6 = [1 -1 1 -1 -1 1 -1 1];
w = y(0+1)*w0 + y(1+1)*w1 + y(3+1)*w3 + y(6+1)*w6

w =

19    -1    11    -9    -7    13   -15     5```