Deux signaux peuvent évoluer dans le domaine temporel, ou non, être en phase, ou non. Ils peuvent aussi posséder une phase variable suivant le temps, on parle alors de phase dynamique. Il existe 3 techniques majeures sur Matlab pour représenter cette évolution temporelle, qui dépendent de ces quelques paramètres :

  • Les signaux sont ils bruités ?
  • Sont ils une superpositions de plusieurs signaux harmoniques ?
  • L’amplitudes de ces sous – signaux varie elle ?
  • Voulons nous travailler sur une phase globale ou sur une phase dynamique ?

Suivant ce que l’on désire obtenir, on choisira l’une de ces 3 techniques :

  •  Utiliser la cross correlation 
  • Passer les signaux dans le domaine Fréquentiel
  • Passer les signaux dans l’espace de Hilbert

Ma préférence va vers cette dernière technique. Mais commençons par le début.


Cross Correlation

Cette technique fonctionnera uniquement pour des signaux unidimensionnels évoluant dans le domaine temporel, et pour calculer une phase globale. Elle se base sur la technique classique de trouver et comparer temporellement les maximas deux des signaux. Elle reste cependant très limitée.

On commence par calculer les deux matrices utiles ici : la séquence (c) et le décalage (lag) :

[c,lag]=xcorr(y1,y2);

On récupère ensuite l’index où c est à son maxima :

[maxC,I]=max(c);

Et on récupère la valeur de lag pour l’index où c est à son maxima :

lag = lag(I);

Avantages de la méthode Cross Correlation :

  • Simplicité de mise en place

Désavantages de la méthode Cross Correlation :

  • Calcul de la phase moyenne uniquement
  • Pas de temps réel
  • Très sensible au bruits et aux interférences

Analyse Fréquentielle

Ici on décompose les signaux dans le domaine spectral, puis on cherche la phase entre deux harmoniques. Sous réserve que les signaux étudiés soient de fréquence constante, cette technique est totalement immunisée contre le bruit et les interférences. On travail en effet dans le domaine spectral, où les perturbations sont des phénomènes pouvant être ignorés.

On commence par passer les deux signaux dans le domaine fréquentiel :

Y1 = fft(y1)
Y2 = fft(y2)

Puis on calcul la phase entre les deux harmoniques, ici pour la 18eme harmonique :

phase_rad = angle(fft_y1(18)/fft_y2(18));

Attention : Il faut correctement sélectionner l’harmonique et c’est pour cela que cette technique reste très limitée pour les signaux de fréquence variable, voir impossible à mettre en place. Il faudrait pour cela que le signal ne change quasiment pas de fréquence sur la fenêtre de la transformée.

Avantages de la méthode par Analyse Spectrale :

  • Immunité totale au bruits & interférences

Désavantages de la méthode par Analyse Spectrale :

  • Calcul de la phase moyenne uniquement
  • Pas de temps réel
  • Efficace pour des signaux de fréquence constante

Transformée de Hilbert

Passons la définition formelle du domaine de Hilbert, on s’en fout. La seule chose intéressante est que dans cet espace les signaux temporels auxquels on a appliqué une transformée de Hilbert sont devenus des vecteurs de nombres complexes, dont le module est constant et dont la phase change en fonction du signal de départ. Avec cette technique, on peut calculer la phase dynamique, variant donc dans le temps. Pour des signaux non évolutifs, cette phase sera constante mais pour des signaux avec transitoires ou variant en amplitude, il sera possible de tracer la phase en fonction du temps.

On commence par passer les deux signaux dans l’espace de Hilbert :

y1_h = hilbert(y1);
y2_h = hilbert(y2);

Il ne reste plus qu’à récupérer le vecteur phase dynamique :

phase_rad = angle(y1_h ./ y2_h);

Il est ensuite possible de tracer ce vecteur en fonction du temps pour observer la phase dynamique :

Phase en radians en fonction du temps, pour plusieurs systèmes à fréquences variables.

Attention : Pour les systèmes rapides, une faible définition des signaux engendrera des oscillations, cf. le graphe précédent. Prenez la moyenne pour compenser, ça revient à filtrer avec un passe bas.

Attention également, découpez bien le vecteur obtenu pour récupérer les informations intéressantes. Ici par exemple, pour calculer la phase sur le régime permanent, on devra découper les vecteur entre 60 et 100 secondes et prendre la moyenne.

Avantages de la méthode par Transformée de Hilbert :

  • Calcul de la phase dynamique
  • Exploitation possible en temps réel
  • Se la péter : cette technique semble encore peu utilisée

Désavantages de la méthode par Transformée de Hilbert :

  • Très sensible aux interférences & bruits – Pensez à filtrer avant transformation
  • Faible précision aux limites – Attention au découpage temporel du vecteur résultant

Et puisque je n’ai rien inventé, Quae sunt Caesaris Caesari : https://stackoverflow.com/questions/27545171/identifying-phase-shift-between-signals


Laisser un commentaire