How to calculate period of signal with matlab
95 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ioannis
am 30 Nov. 2014
Bearbeitet: OSAMA MOHAMED ALI
am 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 Kommentar
Akzeptierte Antwort
Mohammad Abouali
am 1 Dez. 2014
Bearbeitet: Mohammad Abouali
am 1 Dez. 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 Kommentare
Lucky Moffat
am 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.
Weitere Antworten (1)
Firstname Lastname
am 21 Aug. 2017
Bearbeitet: KSSV
am 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 Kommentar
OSAMA MOHAMED ALI
am 23 Apr. 2024
Bearbeitet: OSAMA MOHAMED ALI
am 23 Apr. 2024
can I use it for discrete signals?
Siehe auch
Kategorien
Mehr zu Multirate Signal Processing finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!