2013-11-27 9 views
3

나는 파이썬에서 스펙트로 그램 분석기를 만들기 위해 FFT에 대한 대안을 찾고 있습니다. 웨이블릿 변환이 더 빠르며 단시간 FFT보다 더 나은 시간 정확도를 제공한다고 들었습니다.이 웨이블릿 변환 구현이 정확합니까?

https://en.wikipedia.org/wiki/Discrete_wavelet_transform#Code_example

내가 잔인하게 파이썬으로 변환하지만지고있어 값이 올 경우, 나는 아무 생각이 : 나는 자바로 구현 변환 웨이브 렛 하르 기능이 위키 피 디아 문서에 갔다. 누군가 확인할 수 있습니까?

from math import * 

N = 8 
res = [sin(k) for k in xrange(N)] 

for k in xrange(N): 
    print res[k] 

print 

def discreteHaarWaveletTransform(x): 
    N = len(x) 
    output = [0.0]*N 

    length = N >> 1 
    while True: 
     for i in xrange(0,length): 
      summ = x[i * 2] + x[i * 2 + 1] 
      difference = x[i * 2] - x[i * 2 + 1] 
      output[i] = summ 
      output[length + i] = difference 

     if length == 1: 
      return output 

     #Swap arrays to do next iteration 
     #System.arraycopy(output, 0, x, 0, length << 1) 
     x = output[:length << 1] 

     length >>= 1 


res = discreteHaarWaveletTransform(res) 

for k in xrange(N): 
    print res[k] 

결과 : 내가 잘못 아무것도 찾을 수없는

0.0 
0.841470984808 
0.909297426826 
0.14112000806 
-0.756802495308 
-0.958924274663 
-0.279415498199 
0.656986598719 

0.553732750242 
3.23004408914 
-0.208946450078 
-2.09329787049 
-0.841470984808 
0.768177418766 
0.202121779355 
-0.936402096918 

답변

3

. 결과를 Pywavelet package의 결과와 비교하여 확인할 수도 있습니다. 또한 Pywavelet과 함께 haar wavelet을 구현하는 데 example이 있습니다.