How to get a period of cosinus function ?

Hi,
I have to find the period of the cosinus function using only the vector time and the vector data of the function.
Cosinus function
Vector data
time data

2 Comments

This looks like the sum of two cosines, not just one. Do you want the cosine with the largest magnitude? Are you allowed to use a Fourrier transform?
Yes, it is actually a sum of cosines by using this code :
function [t,x]=getSumOfCosines(delta_t,Tlim,f)
t=0:delta_t:Tlim;
x=sum(cos(2*pi*t.*f));
end
The only restriction is to not use any loop and to use only x and t vectors.

Sign in to comment.

 Accepted Answer

Rik
Rik on 25 May 2020
Edited: Rik on 25 May 2020
Because this is homework, I won't provide a copy-paste ready solution.
If you follow the example from the documentation for fft, you get the code below.
%recreate data
delta_t=0.1;Tlim=5;f=[1;2];
t=0:delta_t:Tlim;
x=sum(cos(2*pi*t.*f));
%figure(1),clf(1)
%plot(t,x)
Fs=1/mean(diff(t));%sampling frequency
L=numel(x);
Y = fft(x);
P2 = abs(Y/L);
P1 = P2(1:floor(L/2)+1);
f = Fs*(0:(L/2))/L;
figure(1),clf(1)
plot(f,P1,'-*')
title('Fourrier transform'),xlabel('frequency'),ylabel('magnitude')
Now you can clearly see there are two frequencies that have a high magnitude.

3 Comments

Thanks for ur input )
Could you just explain what is the relationship between theses frequencies and the period of the former function ?
Frequency is the inverse of period.

Sign in to comment.

More Answers (0)

Tags

Asked:

on 25 May 2020

Commented:

on 27 May 2020

Community Treasure Hunt

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

Start Hunting!