Categories
DSP

Transformasi Fourier, apaan tuch?

Transformasi Fourier merupakan keluarga dari Transformasi Integral, gampangnya, ini adalah ‘alat’ yang bisa kita gunakan untuk melihat sinyal dengan kacamata yang lain. Jika selama ini kita hanya melihat sinyal melalui osiloskop atau alat sejenis lainnya, itu adalah visualisasi sinyal dalam ranah waktu (time domain), sumbu horisontal-nya waktu (t) dan sumbu vertikal-nya adalah amplitudo (A)…

Mmmm lantas ngapain? Ya kita tidak bisa tahu secara langsung informasi penting di ranah waktu kecuali amplitudo dan kapan terjadinya, bisakah menghitung frekuensinya? Mmmm gampang, itu mungkin jawaban Anda, karena bisa jadi Anda hanya membayangkan sebuah gelombang sinusoidal, Anda tinggal hitung berapa gelombang dalam satu detiknya, thing! Langsung ketemu sekian gelombang/detik atau pake satuan cycle/sec atau Hz…

Nah kalo sinyalnya kayak gini gimana dong…

Okey… okey, Anda bisa bilang ‘Ya iyalah mosok ya iya donk… Gimana ngitungnya kalo bentuk gak karuan kayak gitu, terkesan acak dech, jangan-jangan emang gak periodik… piye to iki mas…??’

Baik sebelum cari informasi frekuensi dari gelombang tersebut, akan saya jelaskan langkah demi langkah… Are You ready?? Are You ready?? Are You ready?? wis gak usah kebanyakan omong/tanya…

Masih pake bantuan Matlab, kita awali dengan mendefinisikan sinyal yang akan digunakan sebagai percobaan. Frekuensi cuplikan 1000 Hz (=fs), kita gambar hanya 0,5 detik pertama (=t) untuk sebuah sinyal dengan 2 kandungan frekuensi 100 Hz dan 200 Hz (=y):

fs = 1000;
t = 0:1/fs:0.5;
y = sin(2*pi*100*t)+sin(2*pi*200*t);

kemudian kita gambar yuuk…

plot(t,y);
title(‘Sinyal dengan kandungan 2 frekuensi’)
xlabel(‘waktu (detik)’);

hasilnya…

Kemudian kita lakukan FFT (Fast Fourier Transform), pake perintah fft-nya Matlab:

Y = fft(y);

Kemudian kita gambar hasilnya apa adanya, ingat bahwa hasil dari FFT selalu ada 2 (karena efek simetris):

f = fs*(0:length(Y)-1)/length(Y);
figure;
plot(f,abs(Y));
title(‘Kandungan frekuensi sinyal y (gambar 2 sisi)’)
xlabel(‘frekuensi (Hz)’);

hasilnya…

Baik sekarang kita gambar 1 sisi saja yach…

f = fs*(0:(length(Y)-1)/2)/length(Y);
figure
plot(f,abs(Y(1:(length(Y)+1)/2)));
title(‘Kandungan frekuensi sinyal y (gambar 1 sisi)’)
xlabel(‘frekuensi (Hz)’);

hasilnya…

Gimana mudeng, paham? Enak khan langsung ketahuan frekuensinya… 100Hz dan 200Hz…! Ups terus gimana dengan gambar pertama tadi? Ini dia hasil FFT-nya…

We.. e.. e… jebulannya (ternyata) bagaimana? kandungan-nya sama seperti sinyal awal, 100 Hz dan 200Hz, tapi kok ada tambahan gambar ‘rumput’-nya ya? Ya iyalah donk… lha wong sinyal asli saya kasih derau atau sinyal acak kok… he he he…

Silahken kasih komentar atau pertanyaan, atau barangkali Anda penasaran dengan skrip/program untuk membuat sinyal asli plus acak dan menampilkan FFT-nya? Silahken berkomentar…

NB:
Kenapa saya pake perintah figure untuk memplot gambar-gambar berikutnya? ya supaya gambar awal tidak hilang donk dan ada gambar baru yang muncul… he he he gitu aja kok repot…