Me pregunto sobre la correlación entre el tamaño de entrada y el número de coeficientes dados por una transformada wavelet discreta.
Estoy usando las wavelets de Daubechies para describir una función 1D y estoy usando PyWavelets para implementarla (que es análogo a la caja de herramientas MATLAB).
Comencé por implementarlo usando las wavelets de Haar, que dieron resultados correctos y entiendo exactamente cómo funciona. Digamos que mi función de entrada tiene 16 puntos de datos, si uso Haar, lo que obtengo de una descomposición multinivel ( wavedec
) es algo como esto (el número de cambios entre paréntesis):
V1[1], W1[1], W2[2], W3[4], W4[8]
Todo esto está muy bien. El V1 me da la función de escala y las wavelets W1-W5 de diferente escala y dilatación. Mi problema es cuando uso los próximos Daubechies (referidos como 'db2'
en la caja de herramientas, que se llama D4 ), y obtengo
V1[6], W1[6], W2[9]
Pierdo toda mi intuición. No tengo idea de dónde provienen 6, 6 y 9, y cambian según el nivel que especifique (ni siquiera estoy seguro de lo que significa especificar un nivel) y, por supuesto, el tamaño de entrada. ¿Cómo puedo predecir la cantidad de coeficientes y cuáles son algunos buenos recursos para comprender mejor por qué?
¡Gracias!
EDITAR: Aclaración sobre V y W:
generalmente denota el lapso de una determinada función de escala, , es decir, , donde es el desplazamiento la escala. es igual excepto por la función wavelet, . Sin embargo, podría haber abusado un poco de la notación al referirme a los vectores de coeficientes de V y W.
EDIT2: Código
Aquí está el código MATLAB para producir lo anterior:
>> [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
De hecho, usé PyWavelets, donde se veía así:
>>> 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]
V1[6], W1[6], W2[9]
¿quiere decir que obtiene una función de escala de longitud 6 y dos funciones wavelet de longitud 6 y 9? ¿O son estos los números de coeficientes de los diferentes niveles de su señal transformada? El código MATLAB para obtenerlos también sería muy útil.
V
yW
?