Eu estou pensando sobre a correlação entre o tamanho da entrada e o número de coeficientes fornecidos por uma transformada de wavelet discreta.
Estou usando wavelets de Daubechies para descrever uma função 1D e estou usando PyWavelets para implementá-la (que é análoga à caixa de ferramentas MATLAB).
Comecei implementando-o usando wavelets Haar, que deram os resultados corretos e entendo exatamente como ele funciona. Digamos que minha função de entrada tenha 16 pontos de dados, se eu usar o Haar, o que recebo de uma decomposição multinível ( wavedec
) é algo como isto (o número de mudanças entre parênteses):
V1[1], W1[1], W2[2], W3[4], W4[8]
Está tudo bem e bom. O V1 me fornece a função de escala e as wavelets W1-W5 de diferentes escalas e dilatações. Meu problema é quando uso os próximos Daubechies (mencionados 'db2'
na caixa de ferramentas, chamada D4 ), e recebo
V1[6], W1[6], W2[9]
Eu perco toda a minha intuição. Eu não tenho ideia de onde vêm 6, 6 e 9, e eles mudam dependendo do nível especificado (nem tenho certeza do que significa especificar um nível) e, claro, do tamanho da entrada. Como posso prever o número de coeficientes e quais são alguns bons recursos para entender melhor o porquê?
Obrigado!
EDIT: Esclarecimento sobre V e W:
geralmente denota o período de uma determinada função de escala, , ie , Onde é a mudança e a escala. é o mesmo, exceto para a função wavelet, . Eu poderia ter abusado um pouco da notação ao me referir aos vetores de coeficientes de V e W.
EDIT2: Código
Aqui está o código MATLAB para produzir o acima:
>> [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
Na verdade, eu usei o PyWavelets, que fica assim:
>>> 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]
você quer dizer que obtém uma função de escala de comprimento 6 e duas funções de wavelet de comprimento 6 e 9? Ou esses são os números de coeficientes dos diferentes níveis do seu sinal transformado? O código MATLAB para obtê-los também seria muito útil.
V
eW
?