0

我想在每 33 个观测值上运行一个循环,并使用 PyWavelets 对该数据子集执行离散小波变换。我已经使用 PyWavelets 搜索了很多类似的问题,但找不到任何东西。我也研究过使用数组输出进行循环,但没有运气。

这是我正在使用的代码:

mnum = 0
tbar = 0
nsize = 33
data = np.random.random_sample((99,))


for jtim in range(ntot):
    mnum = mnum + 1
    if (mnum > nsize):
        num = mnum -32
        sub = data[num:mnum]
        (cA, cD) = pywt.dwt(sub, 'db4', mode='sym')

这是我得到的错误:

RuntimeError Traceback (most recent call last) <ipython-input-145-a565a74d0593> in <module>()
      7         num = mnum -32
      8         sub = data[num:mnum]
----> 9         (cA, cD) = pywt.dwt(sub, 'db4', mode='sym')
    _pywt.pyx in _pywt.dwt (pywt/src/_pywt.c:11729)()
    _pywt.pyx in _pywt.dwt_single (pywt/src/_pywt.c:13519)()

RuntimeError: Invalid output length.

我很确定错误是因为我正在尝试输出数组(cA,cD 都是数组)。

所以我尝试使用两个附加语句进行修改并开始工作:

results = []
results2 = []
for jtim in range(len(data):
    mnum = mnum + 1
    if (mnum > nsize):
        num = mnum -32
        sub = data[num:mnum]
        (cA, cD) = pywt.dwt(sub, 'db4', mode='sym')
        results.append(cA)
        results2.append(cD)
4

0 回答 0