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.
'hadamard'Coefficients in normal Hadamard order.
'dyadic'Coefficients in Gray code order, where a single bit change
occurs from one coefficient to the next.
For more information on the
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
Output / Return Value
Limitations
Alternatives / See Also
Reference