how to get "fft" of sin wave?

1 次查看(过去 30 天)
hi
I have the following code for "fft" but I could not get the exactly frequency-amplitude response. where did I make a mistake ? can u please help me with that?
I want to get this figure; amplitude 2.5 and frequency 4Hz.
Capture.PNG
final_point=3;
time=1:0.01:final_point;
omega=2*pi*4;
y1=2.5*sin(omega*time);
% %FFT
acc_inpt=y1;
n_fft=length(acc_inpt);
ff=fft(acc_inpt,n_fft);
num_points=n_fft;
ff=ff/(num_points/2);
figure;
plot(abs(ff))

采纳的回答

Star Strider
Star Strider 2019-6-24
The amplitude appears to be correct. You need to define the frequency axis to get the frequencies to be correct:
final_point=3;
time=1:0.01:final_point;
omega=2*pi*4;
y1=2.5*sin(omega*time);
% %FFT
Fs = 1/mean(diff(time)); % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
Fv = linspace(0, 1, numel(y1)/2+1)*Fn; % Frequency Vector
Iv = 1:numel(Fv); % Index Vector
acc_inpt=y1;
n_fft=length(acc_inpt);
ff=fft(acc_inpt,n_fft);
num_points=n_fft;
ff=ff/(num_points/2);
figure;
plot(Fv, abs(ff(Iv)))
That plots the peak at 4 cycles/time unit, that appears to be what you want to do.
  8 个评论
ADNAN KIRAL
ADNAN KIRAL 2019-6-25
many thanks. appriciate that. @ Star Strider
Star Strider
Star Strider 2019-6-25
As always, my pleasure.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息

产品


版本

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by