我想知道输入大小和离散小波变换给出的系数数量之间的相关性。
我正在使用 Daubechies 小波来描述一维函数,并且我正在使用 PyWavelets 来实现它(类似于 MATLAB 工具箱)。
我首先使用 Haar 小波来实现它,它给出了正确的结果,并且我完全理解它是如何工作的。假设我的输入函数有 16 个数据点,如果我使用 Haar,我从多级分解 ( wavedec
) 得到的结果是这样的(括号中的移位数):
V1[1], W1[1], W2[2], W3[4], W4[8]
这一切都很好。V1 给了我缩放函数和不同比例和膨胀的 W1-W5 小波。我的问题是当我使用下一个 Daubechies ('db2'
在工具箱中称为D4)时,我得到
V1[6], W1[6], W2[9]
我失去了所有的直觉。我不知道 6、6 和 9 来自哪里,它们会根据我指定的级别(甚至不确定指定级别意味着什么)以及输入大小而变化。我如何预测系数的数量,以及有哪些好的资源可以更好地理解为什么?
谢谢!
编辑:关于 V 和 W 的说明:
通常表示某个缩放函数的跨度,, IE, 在哪里是转变和缩放。除了小波函数外,其他都是一样的,. 不过,我可能通过引用 V 和 W 的系数向量来滥用这个符号。
EDIT2:代码
这是生成上述内容的 MATLAB 代码:
>> [C, L] = wavedec(1:16, 4, 'db1'); L
L =
1 1 2 4 8 16
>> [C, L] = wavedec(1:16, 2, 'db2'); L
L =
6 6 9 16
我实际上使用了 PyWavelets,它看起来像这样:
>>> import pywt
>>> map(len, pywt.wavedec(range(16), 'db1')) # defaults to level = 4
[1, 1, 2, 4, 8]
>>> map(len, pywt.wavedec(range(16), 'db2')) # defaults to level = 2
[6, 6, 9]