Citation Envoyé par jyber Voir le message
Pas mal de solutions en fonction de la qualité du signal (bruit, stabilité de la fréquence...). Voici celle qui me vient:

Je transforme chaque signal en son signal analytique :

h1 = hilbert (s1);
h2 = hilbert (s2);

Ca me permet d'obtenir leur phase instantanée simplement en prenant l'angle :

p1 = unwrap(angle(h1));
p2 = unwrap(angle(h2));

Je n'ai plus qu'à faire la différence des deux en en profitant pour moyenner :

mean (p2-p1)

Code complet:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
t = 1 : 1000;
dephasage = pi/3
 
s1 = sin (2*pi*t/500);
s2 = sin (2*pi*t/500 + dephasage);
 
figure(1); clf;
plot (t,s1, t,s2);
ylim([-2,+2]);
 
h1 = hilbert (s1);
h2 = hilbert (s2);
 
p1 = unwrap(angle(h1));
p2 = unwrap(angle(h2));
 
figure(2); clf;
plot (t,p1,t,p2);
 
resultat = mean (p2-p1)
Résultat :

octave:139> phase_diff
dephasage = 1.0472
resultat = 1.0472

J'ai un peu facilité les choses en prenant un nombre entier de périodes. Le moyennage devrait lisser les fluctuations dans le cas contraire.
Hello,
1) Je bute sur la mesure du décalage de phase entre 2 signaux périodiques.
Sous Matlab et n'ayant pas la fonction hilbert, je bute sur les fonctions angle et unwrap (qui dépasse largement -pi +pi.
2) Second point : j'ai une méthode qui me donne un déphasage en fonction de la fréquence (???) et ici je comprends qu'il faut prendre la moyenne de p1 - p2.
Merci de votre aide
Olivier