Loading article…


計算数学において、アダマール順序付き高速ウォルシュ・アダマール変換(FWHT h)は、ウォルシュ・アダマール変換(WHT)を計算するための効率的なアルゴリズムである。次数 のWHTの単純な実装計算複雑度はO ()。FWHT hは、足し算または引き算。
FWHT h は、サイズ WHT を再帰的に分割する分割統治アルゴリズムです。2 つの小さな WHT のサイズに[ 1 ] この実装は、アダマール行列:
の各段階の正規化係数は、まとめて適用することも、省略することも可能です。
シーケンス順序付けされた、またはウォルシュ順序付けされた高速ウォルシュ・アダマール変換 FWHT wは、上記のように FWHT hを計算し、出力を並べ替えることによって得られます。
ウォルシュ・アダマール変換の単純で高速な非再帰的実装は、アダマール変換行列の分解から導かれる。ここで、Aはm乗根である。[ 2 ]
import math def fwht ( a ) -> None : """配列 a のインプレース高速ウォルシュ・アダマール変換。""" assert math . log2 ( len ( a )) . is_integer (), "a の長さは 2 のべき乗です" 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