多级小波分解不起作用

时间:2017-09-10 01:14:38

标签: python dwt pywavelets

我试图通过使用db4小波和5级分解来分解给定的波。以下是相同的代码:

coeffs = pywt.wavedec(yourResultA,'db4',level = 5)

但是编辑器给了我以下错误:

Level value of 5 is too high.  Maximum allowed is 0.

我不理解这个错误的含义,因为0级没有任何意义。 我甚至试图使用以下代码找到db4 wavelet的最大可能级别:

w = pywt.Wavelet('db4')
x = pywt.dwt_max_level(len(yourResultA), w)

这里x的值是15,所以我猜它可以计算15个级别。我的代码中究竟出现了错误吗?

2 个答案:

答案 0 :(得分:0)

如果您阅读pywt.dwt_max_level()上的文档,则可以看到最高级别取决于数据的长度。这可能是问题吗?

文档:https://pywavelets.readthedocs.io/en/0.2.2/ref/dwt-discrete-wavelet-transform.html#maximum-decomposition-level-dwt-max-level

答案 1 :(得分:0)

正在分解的波形文件是立体声格式,因此您可以转换为单色格式或将轴设置为0.

您可以使用:

rate, data = scipy.io.wavfile.read('wavfile.wav')
data = data[:, 0]

然后传递您的数据

coeffs = pywt.wavedec(yourResultA,'db4',level = 5)

或:

将axis参数设置为0

coeffs = pywt.wavedec(yourResultA,'db4',level = 5, axis = 0)