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.
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))
댓글 수: 0
채택된 답변
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Fourier Analysis and Filtering에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!