这个小波变换实现正确吗? [英] Is this wavelet transform implementation correct?

查看:112
本文介绍了这个小波变换实现正确吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找FFT的替代方法,以便在python中创建频谱图分析仪.我听说小波变换比短时FFT更快,并且提供了更好的时间精度.我读了这篇Wikipedia文章,其中介绍了Java中的Haar小波变换实现:

I am searching for alternatives to the FFT to create a spectrogram analyser in python. I heard that the wavelet transform is faster and provides better time accuracy than the short time FFT. I went in this wikipedia article that features the Haar wavelet transform implementation in Java:

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

我将其残酷地转换为python,但是我不知道自己获取的值是否正确.有人可以确认吗?

I brutally converted it to python but I have no idea if the values I'm getting are correct. Can someone confirm?

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

推荐答案

我没有发现任何错误.您还可以通过将结果与 Pywavelet软件包中的结果进行比较来进行检查.关于haar的实现,还有一个示例 Pywavelet的小波.

I don't find anything wrong. You can also check it by comparing your result to the result from Pywavelet package. There is also an example on the implementation of haar wavelet with Pywavelet.

这篇关于这个小波变换实现正确吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆