50 views (last 30 days)

Hello ,i am trying to show frequency domain transform of 3 sinuos signal.I samples it twice the frequency of the highest frequency in the signal.

Althogh i get 3 harmonics but i dont get them at the 10,30,70 Hz and their amplitude is not 10(As shown in the code bello)

Where did i go wrong?

Thanks.

t=0:0.001:1

f1=10;

f2=30;

f3=70;

y1=10*sin(2*pi*f1*t);

y2=10*sin(2*pi*f2*t);

y3=10*sin(2*pi*f3*t);

y4=y1+y2+y3;

% twice the sampling rate

Fs=2*70;

Ts=1/Fs;

Tn=0:Ts:1;

fft_L=length(Tn);

y4_samples=10*sin(2*pi*f1*Tn)+10*sin(2*pi*f2*Tn)+10*sin(2*pi*f3*Tn);

%stem(Tn_new,y4_samples);

ff=fft(y4,fft_L);

plot(abs(ff));

Ameer Hamza
on 1 Apr 2020

Edited: Ameer Hamza
on 1 Apr 2020

First, you are taking fft of y4 which is sampled at 1000Hz. Check the following code to see how it can be dome properly

f1=10;

f2=30;

f3=70;

% twice the sampling rate

Fs=2.05*70; % sampling frequency is a bit above 2 times to get all the peaks.

Ts=1/Fs;

Tn=0:Ts:1;

fft_L=length(Tn);

y4_samples=10*sin(2*pi*f1*Tn)+10*sin(2*pi*f2*Tn)+10*sin(2*pi*f3*Tn);

%stem(Tn_new,y4_samples);

ff=fft(y4_samples);

ff1 = abs(ff/fft_L);

fft2 = ff1(1:floor(fft_L/2)+1);

f = Fs*(0:fft_L/2)/fft_L;

plot(f, fft2);

See this example for more detail: https://www.mathworks.com/help/matlab/ref/fft.html#buuutyt-7

Ameer Hamza
on 1 Apr 2020

Opportunities for recent engineering grads.

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

Start Hunting!
## 0 Comments

Sign in to comment.