How to calculate period of signal with matlab
138 views (last 30 days)
Show older comments
Ioannis
on 30 Nov 2014
Edited: OSAMA MOHAMED ALI
on 23 Apr 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 Comment
Accepted Answer
Mohammad Abouali
on 1 Dec 2014
Edited: Mohammad Abouali
on 1 Dec 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 Comments
Lucky Moffat
on 22 Feb 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.
More Answers (1)
Firstname Lastname
on 21 Aug 2017
Edited: KSSV
on 9 Jul 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 Comment
OSAMA MOHAMED ALI
on 23 Apr 2024
Edited: OSAMA MOHAMED ALI
on 23 Apr 2024
can I use it for discrete signals?
See Also
Categories
Find more on Multirate Signal Processing in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!