Uploaded by dheapratama13

FFT adalah nama algoritma yang

advertisement
FFT adalah nama algoritma yang paling populer untuk komputasi Transformasi Fourier Diskrit dari suatu sinyal diskrit
x[k]. Hasil dari FFT adalah spektrum magnitud terhadap frekuensi dari suatu sinyal diskrit. Umumnya, suatu sinyal
diskrit/kontinyu terbentuk dari campuran beberapa sinyal dengan frekuensi berbeda. Misalnya, pada kasus bercampurnya sinyal informasi dan noise, FFT dapat membantu kita mengetahui pada frekuensi berapa sinyal informasi berada dan pada frekuensi berapa noise mendominasi.
PERHITUNGAN FFT DI NYATAKAN DENGAN PERSAMAN
Ket
Kerangan:
X(k) adalah hasil transformasi fourier diskrit dari x[k], memuat nilai-nilai magnitud sinyal untuk k = 0,
1, ... N x(k) yang dinyatakan dalam x(j) adalah sinyal waktu diskrit N adalah panjang sinyal x(k
Dalam contoh ini, transformasi Fourier akan digunakan untuk menemukan frekuensi sinyal informasi yang telah bercampur noise. Data di-sampling pada 1000 Hz. Sinyal informasi pada frekuensi
50 Hz memiliki amplitudo 0.7 dan pada 120 Hz amplitudo 1 bercampur dengan noise acak dengan rerata nol.
Kode untuk generate sinyal informasi dan noise
Fs = 1000; % Frekuensi sampling
T = 1/Fs; % Periode sampling
L = 1000; % Panjang sinyal informasi
t = (0:L-1)*T; % Vektor waktu
% Jumlahan sinus 50 Hz dan 120 Hz, sinyal informasi
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t)); % Sinyal informasi plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')
Perhitungan FFT dinyatakan dengan persamaan
Sangat sulit untuk mengenali frekuensi sinyal dengan melihat sinyal aslinya.
Kita perlu mengonversi sinyal ini ke domain frekuensi dengan algoritma FFT.
Kode untuk konversi sinyal ke domain frekuensi dengan fungsi fft MATLAB
NFFT = 2^nextpow2(L);
% NFFT adalah panjang vektor hasil perhitungan FFT. Baiknya adalah bilangan dari angka 2 yang
dipangkatkan, dan sedikit lebih panjang dari sinyal informasi. Sehingga digunakanlah fungsi
nextpow2.
Y = fft(y,NFFT)/L;
% Untuk mendapatkan normalisasi magnitud sinyal, nilai hasil FFT harus dibagi dengan L (panjang
data)
f = Fs/2*linspace(0,1,NFFT/2);
% Vektor frekuensi untuk plot spektrum frekuensi. Pembagi dua pada Fs/2 dan NFFT/2 digunakan
karena vektor Y bersifat simetris. Y(1)=Y(NFFT); Y(2)=Y(NFFT-1); dst. Y(1) untuk frekuensi 0 dan
Y(NFFT) untuk frekuensi 2π. Jadi plot spektrum frekuensi cukup mengambil data Y(1) s.d.
Y(NFFT/2).
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
Amplitudo sinyal informasi tidak tepat 0.7 dan 1 karena pengaruh noise. Selain
itu juga karena panjang sinyal x(k) terbatas. Mengubah nilai L dari 1000 ke
10000 pada contoh ini akan menghasilkan nilai amplitudo yang lebih tepat
Download