合計が元の信号を再現するように、ウェーブレット分解のブランチを部分的に再構築する方法を探しています。これは、以下を使用して Matlab を使用して達成できます。
DATA = [0,1,2,3,4,5,6,7,8,9]
N_LEVELS = 2;
WAVELET_NAME = 'db4';
[C,L] = wavedec(DATA, N_LEVELS, WAVELET_NAME);
A2 = wrcoef('a', C, L, WAVELET_NAME, 2);
D2 = wrcoef('d', C, L, WAVELET_NAME, 2);
D1 = wrcoef('d', C, L, WAVELET_NAME, 1);
A2+D2+D1
ans =
0.0000 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000
pywt を使用して同じことを達成したいのですが、これについてどうすればよいかわかりません。このpywt.waverec
関数は完全な再構成を作成しますが、部分的な再構成のレベル パラメーターはありません。このpywt.upcoef
関数は、単一のレベルに必要なことを行いますが、これを複数のレベルに拡張する方法がわかりません:
>>> import pywt
>>> data = [1,2,3,4,5,6]
>>> (cA, cD) = pywt.dwt(data, 'db2', 'smooth')
>>> n = len(data)
>>> pywt.upcoef('a', cA, 'db2', take=n) + pywt.upcoef('d', cD, 'db2', take=n)
array([ 1., 2., 3., 4., 5., 6.])