Convolution

Nous savons déjà sous-échantillonner un signal. Pour effectuer des décompositions sur des bases d'ondelettes plus générales, il faut pouvoir implémenter des convolutions. L'opérateur Matlab 'conv' calcule des convolutions. Le nème élément de la convolution y de b avec x s'écrit

y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)

ou (nb+1) est la longueur de b, supposée plus petite que la longueur n de x. En se ramenant à des vecteurs dont les indices commencent à 0, soit

B[k] = b(k+1), X[k] = x(k+1) et Y[k] = y(k+1),

alors

La longueur de y est égale à length(b)+length(x)-1.

Cette convolution est identique à la convolution de signaux à indices dans Z lorsqu'on prolonge les vecteurs par 0, en respectant la convention selon laquelle le premier élément de chaque vecteur correspond à l'indice 0.

L'exemple TP3 compare des implémentations "à la main" de la décomposition sur le base de Haar avec des implémentations utilisant l'opérateur de convolution.

Tapez 'TP3' sous Matlab pour l'exécuter.

Exercice

Vous allez implémenter une cascade simple par un banc de filtres de Daubechies. Comme d'habitude, faites un 'clear all', puis créez un nouveau fichier texte à coté de 'TP3.m' sous le nom de 'EX3.m'. Voici ce que doit faire votre fichier à l'exécution:

Que remarque-t-on aux bords de e et w? Quelle est la cause de ce phénomène?
Sachant que le support du filtre rh de Daubechies-4 est [0,3], quel est le support de h?

On reprend la convention ci-dessus, où les vecteurs commencent à l'indice 0. De plus, on utilise les degrés de liberté disponibles sur la définition des ondelettes pour que le support de rg soit identique à celui de rh. Après la convolution, et avant le sous -échantillonnage, quel est l'instant correspondant à la première valeur calculée?

Solution (commande Matlab: SOL3)


suite