Быстрое преобразование Уолша – Адамара
В вычислительной математике упорядоченное по Адамару быстрое преобразование Уолша-Адамара ( FWHT h ) является эффективным алгоритмом для вычисления преобразования Уолша-Адамара (WHT). Наивная реализация WHT порядка будет иметь вычислительную сложность O ( ) . FWHT h требует только добавления или вычитания.
FWHT h — это алгоритм «разделяй и властвуй» , который рекурсивно разбивает WHT размером на два меньших WHT размером . [ 1 ] Эта реализация следует рекурсивному определению Матрица Адамара :
The Коэффициенты нормализации для каждого этапа могут быть сгруппированы вместе или даже опущены.
, Упорядоченное по последовательности также известное как упорядоченное по Уолшу быстрое преобразование Уолша-Адамара, FWHT w , получается путем вычисления FWHT h, как указано выше, а затем перестановки выходных данных.
Простая быстрая нерекурсивная реализация преобразования Уолша – Адамара следует из разложения матрицы преобразования Адамара как , где A — корень m- й степени из . [ 2 ]
Пример кода Python
[ редактировать ]def fwht(a) -> None:
"""In-place Fast Walsh–Hadamard Transform of array a."""
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
См. также
[ редактировать ]Ссылки
[ редактировать ]Внешние ссылки
[ редактировать ]- Чарльз Константин Гумас, быстрое преобразование Адамара столетней давности оказывается полезным в цифровых коммуникациях