How to calculate period of signal with matlab

138 ビュー (過去 30 日間)
Ioannis
Ioannis 2014 年 11 月 30 日
編集済み: OSAMA MOHAMED ALI 2024 年 4 月 23 日
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 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2014 年 11 月 30 日
This is not clear, do you have samples or what?

サインインしてコメントする。

採用された回答

Mohammad Abouali
Mohammad Abouali 2014 年 12 月 1 日
編集済み: Mohammad Abouali 2014 年 12 月 1 日
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 件のコメント
Anuj Patel
Anuj Patel 2017 年 4 月 26 日
What is the other FFT approach , sir?
Lucky Moffat
Lucky Moffat 2023 年 2 月 22 日
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.

サインインしてコメントする。

その他の回答 (1 件)

Firstname Lastname
Firstname Lastname 2017 年 8 月 21 日
編集済み: KSSV 2022 年 7 月 9 日
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 件のコメント
OSAMA MOHAMED ALI
OSAMA MOHAMED ALI 2024 年 4 月 23 日
編集済み: OSAMA MOHAMED ALI 2024 年 4 月 23 日
can I use it for discrete signals?

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMultirate Signal Processing についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by