• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 04/02/2020

L'intercorrélation une première approche

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Vous avez vu dans le chapitre précédent que la convolution pouvait s'avérer bien utile. Dans ce chapitre, vous allez découvrir un outil très similaire à la convolution qui s'appelle l'inter-corrélation.

Elle permet, parmi d'autres utilités, de détecter automatiquement un motif.

Introduction

Dans la première partie du cours, vous avez vu que pour comparer des signaux vous pouviez utiliser la distance.

Mais, si deux signaux sont extrêmement ressemblants, mais juste décalés horizontalement, cette distance sera non nulle.

Acquisition et visualisation

Prenez l'exemple des signaux s1 et s2 que vous trouverez ici :

%acquisition des données
s1 = load('s1.dat');
s2 = load('s2.dat');
%Visualisation
plot(s1); hold on ; plot(s2,'r'); hold off
legend({'s_1' 's_2'})
Le signal s_2 (en rouge) en forme de maison est bien visible dans le signal s_1 (en bleu)
Le signal s2 (en rouge) en forme de maison est bien visible dans le signal s1 (en bleu)

On aimerait bien avoir un outil qui permette de comparer des signaux, tout en s'autorisant un décalage horizontal. C'est le rôle de l'inter-corrélation.

Une pause théorique

Distance entre deux signaux décalés

Imaginez donc que vous souhaiteriez retrouver le motif s2 au sein du signal s1automatiquement.

Rien de plus simple, ce qu'il faut faire c'est calculer la distance entre les deux signaux, mais avec un paramètre de décalage τ .

d[s1,s2](τ)=s1s2(décalé de τ)

La distance d[s1,s2](τ)  sera alors minimale pour la valeur de τ qui correspond à la position du motif s2 caché dans s1 .

Et si vous développez un peu cette expression vous trouverez que :

d(τ)=s12+s2(décalé de τ)22s1,s2(décalé de τ)

Définition de l'intercorrélation

Or, ce qui nous intéresse, finalement, c'est de minimiser la distance d en fonction de τ .

Comme ni s1 ni s2(décalé de τ) ne vont varier, avec τ,  le problème revient finalement à maximiser  s1,s2(τ).

Or, si l'on se souvient que décaler un signal, c'est effectuer une translation temporelle : s2(décalé de τ)=s2(tτ) , vous comprendrez pourquoi on a introduit ce que l'on appelle l'inter-corrélation de s1 avec s2 :

Γs1,s2(τ)=s1(t)s2(tτ)dt

C'est lorsque cette fonction est maximale que les deux signaux se ressemblent le plus.

Implémentation

La fonction Matlab qui calcule cette grandeur s'appelle xcorr.  La fonction Matlab renvoie deux arguments : le premier est l’inter-corrélation elle-même et le deuxième est la valeur du décalage.

%Calcul de l'intercorrelation
%pkg load signal % a décommenter si vous travaillez sous linux
[gamma lag] = xcorr(s1,s2); % intercorrelation entre s1 et s2
plot(lag, gamma);
L'inter-corrélation est maximal pour un décalage de 400, comme nous pouvions le voir sur la figure de départ.
L'inter-corrélation est maximal pour un décalage de 400, comme nous pouvions le voir sur la figure de départ.

Et assurément, l'intercorrélation est maximale lorsque le décalage vaut 400. Vous pouvez vérifier que si vous décalez le signal s2 rouge de 400 vers la droite dans la figure de départ, vous trouvez bien la position du motif dans le signal s_1.

Alors quel intérêt ? Ici l'intérêt réside dans le fait que vous ayez un critère quantitatif pour retrouver un motif et par conséquent un moyen d'automatiser la procédure de détection de motif. 

Par ailleurs, cette méthode fonctionne bien sur des signaux très bruités où même visuellement cette détection s'avère difficile.

Exemple de certificat de réussite
Exemple de certificat de réussite