【问题标题】:Is this wavelet transform implementation correct?这个小波变换实现是否正确?
【发布时间】:2013-11-28 03:44:50
【问题描述】:

我正在寻找 FFT 的替代方案,以在 python 中创建频谱图分析器。我听说小波变换比短时 FFT 更快,并且提供更好的时间精度。我阅读了这篇介绍 Java 中 Haar 小波变换实现的维基百科文章:

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

我粗暴地将它转换为 python,但我不知道我得到的值是否正确。有人可以确认吗?

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

【问题讨论】:

    标签: python fft wavelet haar-wavelet wavelet-transform


    【解决方案1】:

    我没有发现任何问题。您还可以通过将您的结果与Pywavelet package 的结果进行比较来检查它。还有一个example用Pywavelet实现haar小波。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多