我想在每 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)