stringtranslate.com

Быстрое преобразование Уолша-Адамара

Быстрое преобразование Уолша–Адамара, примененное к вектору длиной 8
Пример для входного вектора (1, 0, 1, 0, 0, 1, 1, 0)

В вычислительной математике преобразование Уолша–Адамара, упорядоченное по Адамару ( FWHT h ), является эффективным алгоритмом для вычисления преобразования Уолша–Адамара (WHT). Наивная реализация WHT порядка имела бы вычислительную сложность O ( ) . FWHT h требует только сложений или вычитаний.

FWHT h — это алгоритм «разделяй и властвуй» , который рекурсивно разбивает WHT размером на два меньших WHT размером . [1] Эта реализация следует рекурсивному определению матрицы Адамара :

Коэффициенты нормализации для каждого этапа могут быть сгруппированы или даже опущены.

Упорядоченное по последовательности , также известное как упорядоченное по Уолшу, быстрое преобразование Уолша–Адамара, FWHT w , получается путем вычисления FWHT h, как указано выше, и последующей перестановки выходных данных.

Простая быстрая нерекурсивная реализация преобразования Уолша–Адамара следует из разложения матрицы преобразования Адамара как , где A — корень степени m из . [2]

Пример кода Python

def  fwht ( a )  ->  None : """Быстрое преобразование Уолша–Адамара на месте для массива a.""" h = 1 while h < len ( a ): # выполнить 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 # нормализовать и увеличить a /= math . sqrt ( 2 ) h *= 2                                                   

Смотрите также

Ссылки

  1. ^ Fino, BJ; Algazi, VR (1976). «Единая матричная обработка быстрого преобразования Уолша–Адамара». IEEE Transactions on Computers . 25 (11): 1142–1146. doi :10.1109/TC.1976.1674569. S2CID  13252360.
  2. ^ Ярлагадда и Херши, «Анализ и синтез матрицы Адамара», 1997 (Springer)

Внешние ссылки