2017-03-07 26 views
1

我一直试图以施加一水平抽样小波使用函数swtn从封装pywavelets变换为3D numpy的排列在Python如下:一水平抽样小波在3D numpy的阵列误差变换

import numpy as np 
from pywavelts import swtn 

img = np.random.rand(4,4,5) 
WT = swtn(img, 'coif1', level = 1, start_level = 0) 

它发源于一个错误:

Traceback (most recent call last): 

    File "<ipython-input-60-1f6f4144a239>", line 1, in <module> 
    pywt.swtn(img, 'coif1', level=1, start_level =0, axes=None) 

    File "/usr/local/lib/python2.7/dist-packages/pywt/_swt.py", line 387, in swtn 
    axis=axis)[0] 

    File "pywt/_extensions/_swt.pyx", line 100, in pywt._extensions._swt.swt_axis (pywt/_extensions/_swt.c:6203) 

    File "pywt/_extensions/_swt.pyx", line 116, in pywt._extensions._swt.swt_axis (pywt/_extensions/_swt.c:5035) 

ValueError: start_level must be less than 0. 

然而,这并没有任何意义,我自启动电平值小于0不是由小波分解允许的。有人能看一看,并指出我失踪的是什么吗?

回答

0

我刚刚发生了相同的错误。这是由于您使用数组的大小:因为它不是被2整除,水平,由函数给出的最大数量:

pywt.swt_max_level 

为0。举例来说,这样的:

img = np.random.rand(4,4,6) 
WT = swtn(img, 'coif1', level = 1, start_level = 0) 

适合我。