Anda di halaman 1dari 4

MENGELIMINASI NILAI DC PADA SINYAL DENGAN FFT

Mengeliminasi Nilai DC pada Sinyal dengan FFT


Mochamad Nur Qomarudin, Rejeb 1950Je/1438H/ April 2017M

Pengantar
Bismillah. Seorang sahabat Nusantara yang sedang riset di Australia memiliki data hasil ukur
accelerometer dari sebuah kendaraan dan beliau ingin mendapatkan nilai posisi dengan melakukan
integrasi ganda pada data tersebut. Untuk integrasi ganda, ia menggunakan metode yang
dirumuskan oleh Slifka [1]. Ada fragmen kode yang ia tanyakan kepada saya, yaitu terkait peran FFT
dalam metode tersebut, untuk apa dan bagaimana algoritma penerapannya. Tulisan ini adalah untuk
menjelaskan hal tersebut dan untuk siapa saja yang menjumpai pertanyaan yang sama. Mudah2an
bermanfaat.

Sekilas Tentang FFT


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. Dalam MATLAB, FFT telah disiapkan sebagai fungsi siap pakai dan juga fungsi inversinya.
Penjelasan ini saya terjemah bebaskan dari MathWorks [2].
Y = fft(X) and X = ifft(Y) adalah fungsi untuk transformasi Fourier dan inversnya. Misalnya X dan Y
memiliki panjang n, transformasi tersebut dirumuskan dengan persamaan berikut:

dimana

Untuk penjelasan lebih lengkap khusus terkait FFT, pernah saya tulis di sini [3].

Kode MATLAB FFT untuk Integrasi


Di dalam buku tesisnya, Slifka [1] mengolah data percepatan kendaraan dari hasil ukur accelerometer
untuk menjadi data posisi dengan metode integrasi ganda. Di dalam kode MATLAB yang ia susun,
Slifka melibatkan FFT dan IFFT pada tiap integrasi. Berikut ini adalah fragmen kode MATLAB untuk
integrasi tahap pertama untuk mengolah data percepatan (acc) menjadi kecepatan (vel).
%Perform 1st Integration
vel=Ts*cumtrapz(acc);
vel_0=-1*mean(vel);
Vel_Spect=fft(vel,length(t));
x=length(Vel_Spect);
%Set the First 46 values constant
Vel_Spect(1)=0.0775*Vel_Spect(46);
for i=2:45

1
MENGELIMINASI NILAI DC PADA SINYAL DENGAN FFT

Vel_Spect(i)=0.0775*Vel_Spect(45);
Vel_Spect(x-(i-2))=conj(Vel_Spect(i));
end
vel=real(ifft(Vel_Spect));
plot(t,vel), grid on;
xlabel('Time (sec.)'),ylabel('Amplitude (mm/sec)'),title('Velocity (after
1^s^t Integration) Vs. Time')

CATATAN
Beberapa catatan penting untuk memahami kode ini, sepengetahuan saya, antara lain:
Vel_Spect memuat spektrum frekuensi dari sinyal vel (hasil dari transformasi fourier terhadap
sinyal vel)
Yang dimaksud values constant sepertinya magnitud spektrum frekuensi hasil FFT
Vel_Spect(1) = 0.0775*Vel_Spect(46) maksudnya, menyetarakan magnitud sinyal frekuensi 0
Hz (sinyal DC) dengan magnitud sinyal frekuensi ambang batas maksimal. Kode inilah yang
berguna untuk mengeliminasi nilai DC pada sinyal.
Nilai 46 adalah batas indeks vektor Vel_Spect yang akan diolah, berfungsi sebagai frekuensi
cut-off. Artinya, semua magnitud sinyal yang tersimpan pada indeks ke-47 dst tidak akan
diolah untuk tahap selanjutnya.
Koefisien 0.0775 adalah nilai alfa untuk meredam magnitud sinyal.
Catatan2 di atas saya buat setelah memelajari algoritma di bawah ini.

Algoritma Eliminasi DC dengan FFT


Kode yang digunakan oleh Slifka di atas kurang lebih menyatakan algoritma eliminasi nilai DC dengan
FFT [4]. Pada dasarnya, algoritma berikut ini adalah representasi high-pass filter dengan
menggunakan FFT.

N adalah ukuran vektor FFT, k adalah nomor index dari koefisien FFT yang menyatakan frekuensi cut-
off, dan adalah koefisien redaman filter yang kita tetapkan.
Algoritma di atas adalah algoritma FFT yang dapat digunakan untuk meredam sinyal-sinya frekuensi
rendah dan mengeliminasi sinyal frekuensi 0 HZ atau sinyal DC. Eliminasi tersebut dinyatakan dalam
baris Xf(0) = 0Xf(k).
Bagian loop (for) menceritakan: Vektor Xf hasil dari FFT terbagi dalam dua bagian simetris, yaitu
magnitud frekuensi sinyal dan juga pasangannya (conjugate). Ketika magnitud sinyalnya dikalikan

2
MENGELIMINASI NILAI DC PADA SINYAL DENGAN FFT

dengan koefisien maka pasangannya juga harus disesuaikan. Loop ini untuk meredam sinyal-sinyal
frekuensi rendah dengan koefisien redaman .
Kesimetrisan vektor Xf ini diperlukan pada fungsi IFFT di bawahnya, untuk mengembalikan vektor
frekuensi ke domain waktu.
Gambar plot berikut mengilustrasikan sinyal asli dan sinyal hasil eliminasi nilai DC dengan algoritma
FFT.

Gambar 1 Ilustrasi filter FIR dengan algoritma FFT [4]

Sinyal asli (Gambar a) setimbang di amplitudo 2 karena ada komponen sinyal DC. Spektrum frekuensi
dari sinyal asli (b) menunjukkan bahwa pada frekuensi 0 Hz, magnitudnya bernilai 250. Setelah
algoritma eliminasi DC dengan FFT diterapkan (c), magnitud frekuensi 0 Hz bernilai 0. Konversi ke
domain waktu, menghasilkan sinyal yang setimbang di amplitudo 0.
CATATAN
Pada kasus pengukuran dengan accelerometer, intervensi hasil pengukuran oleh sinyal DC ini hampir
selalu terjadi karena efek grafitasi bumi [4].

Penutup
Sekian. Mudah2an bermanfaat. Alhamdulillah.
Saran/kritik boleh disampaikan via WA: 0857 33 484 101, Email: alfiyahibnumalik@gmail.com
Arsip: http://mnurq.ga/

3
MENGELIMINASI NILAI DC PADA SINYAL DENGAN FFT

Referensi
[1] L. D. Slifka, An Accelerometer Based Approach to Measuring Displacement of A Vehicle Body,
Dearborn: University of Michigan, 2004.

[2] Mathworks, "fft," Mathworks, [Online]. Available:


https://www.mathworks.com/help/matlab/ref/fft.html. [Accessed April 2017].

[3] M. N. Qomarudin, FFT untuk DFT @ MATLAB, 1 Oktober 2015. [Online]. Available:
http://www.mnurq.ga/2015/10/fft-untuk-dft-matlab.html. [Diakses April 2017].

[4] T. M. Do and T. C. Le, "Performance Analysis of FFT Filter to Measure Displacement Signal in Road
Roughness Profiler," International Journal of Computer and Electrical Engineering, vol. 5, no. 4,
pp. 356-361, 2013.

Anda mungkin juga menyukai