Top Qs
Timeline
Chat
Perspective

Fast Walsh–Hadamard transform

Divide-and-conquer algorithm to compute a Hadamard transform From Wikipedia, the free encyclopedia

Fast Walsh–Hadamard transform
Remove ads
Remove ads

In computational mathematics, the Hadamard ordered fast Walsh–Hadamard transform (FWHTh) is an efficient algorithm to compute the Walsh–Hadamard transform (WHT). A naive implementation of the WHT of order would have a computational complexity of O(). The FWHTh requires only additions or subtractions.

Thumb
The fast Walsh–Hadamard transform applied to a vector of length 8

Thumb
Example for the input vector (1, 0, 1, 0, 0, 1, 1, 0)

The FWHTh is a divide-and-conquer algorithm that recursively breaks down a WHT of size into two smaller WHTs of size . [1] This implementation follows the recursive definition of the Hadamard matrix :

The normalization factors for each stage may be grouped together or even omitted.

The sequency-ordered, also known as Walsh-ordered, fast Walsh–Hadamard transform, FWHTw, is obtained by computing the FWHTh as above, and then rearranging the outputs.

A simple fast nonrecursive implementation of the Walsh–Hadamard transform follows from decomposition of the Hadamard transform matrix as , where A is m-th root of . [2]

Remove ads

Python example code

import math
def fwht(a) -> None:
    """In-place Fast Walsh–Hadamard Transform of array a."""
    assert math.log2(len(a)).is_integer(), "length of a is a power of 2"
    h = 1
    while h < len(a):
        # perform FWHT
        for i in range(0, len(a), h * 2):
            for j in range(i, i + h):
                x = a[j]
                y = a[j + h]
                a[j] = x + y
                a[j + h] = x - y
        # normalize and increment
        a /= math.sqrt(2)
        h *= 2
Remove ads

See also

References

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads