Szybka transformata Walsha-Hadamarda

Szybka transformata Walsha-Hadamarda zastosowana do wektora o długości 8
Przykład wektora wejściowego (1, 0, 1, 0, 0, 1, 1, 0)

W matematyce obliczeniowej uporządkowana przez Hadamarda szybka transformata Walsha-Hadamarda ( FWHT h ) jest wydajnym algorytmem do obliczania transformaty Walsha-Hadamarda (WHT). Naiwna implementacja WHT rzędu złożoność obliczeniową O ( ) displaystyle FWHT h wymaga tylko dodawania lub odejmowania

FWHT h to algorytm typu „dziel i zwyciężaj” który rekurencyjnie dzieli podatek u źródła o rozmiarze na dwa mniejsze WHT o rozmiarze . Ta implementacja z rekurencyjną definicją macierzy Hadamarda : :

Czynniki można zgrupować lub nawet

Uporządkowana sekwencyjnie , znana również jako uporządkowana przez Walsha, szybka transformata Walsha-Hadamarda, FWHT w , jest uzyskiwana przez obliczenie FWHT h jak powyżej, a następnie przestawienie wyników.

implementacja transformaty Walsha-Hadamarda wynika z rozkładu macierzy transformacji Hadamarda gdzie A to -ty z .

Przykładowy kod Pythona

   
    
      
       
        
           0    
                  
                  
                    
                    
                      
        
          
           def  fwht  (  a  )  ->  None  :  """Szybka transformata Walsha-Hadamarda w miejscu tablicy a."""  h  =  1  while  h  <  len  (  a  ):  # wykonaj FWHT  dla  i  w  zakresie  (  ,  len  (  a  ),  godz  *  2  ):  dla  j  w  przedziale  (  ja  ,  ja  +  godz  ):  x  =  za  [  j  ]  y  =  za  [  j  +  godz  ]  za  [  jot  ]  =  x  +  y  za  [  j  +  godz  ]  =  x  -  y  # znormalizuj i zwiększ  a  /=  2  h  *=  2 

Zobacz też

Linki zewnętrzne