Jumat, 16 November 2012

Single pole lowpass filter algorithm

Sesuai dengan namanya, lowpass filter merupakan sebuah tapis yang hanya melewatkan frekuensi rendah dengan cara melemahkan (attenuates) amplitudo yang memiliki frekuensi dibawah frekuensi cutoff. 



Continous time lowpass filter
ada beberapa jenis filter dengan berbagai respon terhadap perubahan frekuensi. Respon frekuensi dari sebuah filter biasanya direpresentasikan menggunakan bode plot, dimana pada frekuensi cutoff, amplitudo akan turun -3dB dan terus menurun -20dB tiap dekade frekuensi.  continous time lowpass filter juga dapat dideskripsikan kedalam transformasi laplace. Sebagai contoh, 1st order lowpass filter dapat dideskripsikan menggunakan notasi laplace berikut. 


\frac{\text{Output}}{\text{Input}} = K \frac{1}{1 + s \tau}

dimana s adalah variabel transformasi laplace,  τ adalah filter time constant dan K merupakan gain filter. 

Bagaimana implementasi single pole lowpass filter kedalam bahasa pemprograman?

Untuk dapat melakukan simulasi lowpass filter didalam perangkat lunak dapat dilakukan dengan mengamati karakteristik filter dalam domain waktu dan permodelan diskrit.

Berdasarkan hukum kirchoff, didefinisikan bahwa kapasitansi adalah:



v_{\text{in}}(t) - v_{\text{out}}(t) = R \; i(t)




(V)
Q_c(t) = C \, v_{\text{out}}(t)




(Q)
i(t) = \frac{\operatorname{d} Q_c}{\operatorname{d} t}





Dimana  Q_c(t) adalah jumlah muatan yang ditampung pada kapasitor dalam waktu t. Jika dilakukan subtitusi persamaan Q menuju persamaan I maka didapat \scriptstyle i(t) \;=\; C \frac{\operatorname{d}v_{\text{out}}}{\operatorname{d}t} yang dapat disubtitusikan pada persamaan V, sehingga:
v_{\text{in}}(t) - v_{\text{out}}(t) = RC \frac{\operatorname{d}v_{\text{out}}}{\operatorname{d}t}

Persamaan tersebut dapat dideskritkan. untuk lebih sederhana, asumsikan bahwa jumlah sampel input dan output diambil dalam selang waktu \scriptstyle \Delta_T. Katakanlah \scriptstyle v_{\text{in}} direpresentasikan dengan rentetan data \scriptstyle (x_1,\, x_2,\, \ldots,\, x_n) dan  \scriptstyle v_{\text{out}} direpresentasikan sebagai sequence data \scriptstyle (y_1,\, y_2,\, \ldots,\, y_n), maka dapat dilakukan subtitusi:
x_i - y_i = RC \, \frac{y_{i}-y_{i-1}}{\Delta_T}

dengan menata ulang persamaan diatas dapat ditulis sebagai berikut:
y_i = \overbrace{x_i \left( \frac{\Delta_T}{RC + \Delta_T} \right)}^{\text{Input contribution}} + \overbrace{y_{i-1} \left( \frac{RC}{RC + \Delta_T} \right)}^{\text{Inertia from previous output}}.
implementasi single pole lowpass filter waktu diskret dapat diimplementasikan kedalam persamaan:
y_i = \alpha x_i + (1 - \alpha) y_{i-1} \qquad \text{where} \qquad \alpha \triangleq \frac{\Delta_T}{RC + \Delta_T}
\scriptstyle \alpha merupakan smoothing factor dengan nilai \scriptstyle 0 \;\leq\; \alpha \;\leq\; 1. hubungan antara time constant RC, \scriptstyle \Delta_T dan smoothing factor \scriptstyle \alpha dapat didefinisikan :
RC = \Delta_T \left( \frac{1 - \alpha}{\alpha} \right)

Jika \scriptstyle \alpha \;=\; 0.5, maka nilai RC akan sama dengan periode sampling. Jika \scriptstyle \alpha \;\ll\; 0.5, maka \scriptstyle RC secara signifikan akan lebih besar dari periode sampling, dan \scriptstyle \Delta_T \;\approx\; \alpha RC.
Algorithm implementation
Contoh berikut adalah pseudocode algoritma single pole lowpass filter yang akan mensimulasikan efek dari lowpass filter. 

 // Return RC low-pass filter output samples, given input samples,
 // time interval dt, and time constant RC
 function lowpass(real[0..n] x, real dt, real RC)
   var real[0..n] y
   var real α := dt / (RC + dt)
   y[0] := x[0]
   for i from 1 to n
       y[i] := α * x[i] + (1-α) * y[i-1]
   return y

Algoritma diatas telah digunakan penulis dalam melakukan smoothing pengambilan data accelerometer dengan α dapat dicari dengan melakukan trial error.

referensi:

Tidak ada komentar:

Posting Komentar

Exchange 2010 SP3 PrepareAD error “The well known object entry with the GUID”

Currently we are going to upgrade Exchange 2010 SP1 to Exchange 2010 SP3 which is one of the step is preparing AD. But in the mid of proces...