How to calculate period of signal with matlab
138 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Ioannis
le 30 Nov 2014
Modifié(e) : OSAMA MOHAMED ALI
le 23 Avr 2024
Hi everybody, I have the signal x2(t)=|cos(10*pi*t)|.How can i calculate its period with matlab?I am new matlab so each help will be usefull
1 commentaire
Réponse acceptée
Mohammad Abouali
le 1 Déc 2014
Modifié(e) : Mohammad Abouali
le 1 Déc 2014
use autocorrelation. If your data is periodic you should get high correlation once the lag time matches the period. here is an example:
x=0:0.1:20*2*pi;
y=sin(x); % so we know the period is 2*pi roughly 6.28
ac=xcorr(y,y);
[~,locs]=findpeaks(ac);
mean(diff(locs)*0.1)
ans =
6.2842
In a more complex data set including some noise you need to work around the find peaks a little bit. That might be too noisy.
In the example you gave here is what you will get
x=0:0.01:20*2*pi;
y=abs(cos(10*pi*x));
ac=xcorr(y,y);
[~,locs]=findpeaks(ac);
mean(diff(locs)*0.01)
ans =
0.1000
Another approach is using FFT, particularly if you have a more complex signal.
3 commentaires
Lucky Moffat
le 22 Fév 2023
Take the FFT of the signal, then compute the power spectrum. Then, determine the frequency index k of maximum power. After this, determine the frequency at index k of maximum power. Once you've found the frequency it's easy to find the period since T = 1/f, e.g.,
t = 0:0.004:4;
sig = cos(2*pi*20*t);
a = fft(sig, 1024);
A = abs(a).^2;
[~, index_max_power] = max(A);
index_freq = index_max_power / ((t(2)-t(1))*length(A));
period = 1/index_freq
So, in that example the period T should be closer to 0.05.
Plus de réponses (1)
Firstname Lastname
le 21 Août 2017
Modifié(e) : KSSV
le 9 Juil 2022
t=0:.01:10;
y=10*sin(10*pi*t);
[idx,idx]=findpeaks(y);
T=t(idx(2))-t(idx(1));
disp(['Time Period =' num2str(T),'seconds']);
1 commentaire
OSAMA MOHAMED ALI
le 23 Avr 2024
Modifié(e) : OSAMA MOHAMED ALI
le 23 Avr 2024
can I use it for discrete signals?
Voir également
Catégories
En savoir plus sur Multirate Signal Processing dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!