Retrieve phase from a time-varying cosine signal
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I got two experimental time-domain signals (sampling length of N=13001, sampling frequency of Fs=4000 Hz). By curve fitting, I found one (red) is a cosine signal with a single frequency, so the phase shift is linear with respect to time. However, the other (blue) is a time-varying cosine singal whose phase shift is nonliear with respect to time. How can I get the phase difference between the red signal and the blue one? Please find attached "data.txt".
0 commentaires
Réponse acceptée
Hiro Yoshino
le 27 Mai 2023
I would suggest that you should try hilbert transform as follows:
load("data.txt")
plot(data(:,1))
hold on
plot(data(:,2));
hold off;
Hilbert transform and phase analysis
y1 = hilbert(data(:,1));
y2 = hilbert(data(:,2));
phase1 = atan2(imag(y1),real(y1));
phase2 = atan2(imag(y2),real(y2));
plot(unwrap(phase1)); % unwrap phases
hold on;
plot(unwrap(phase2));
hold off;
plot(unwrap(phase1) - unwrap(phase2));
title("Phase difference");
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Transforms dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!