FIR Filtre Katsayılarının Hesaplanması

FIR (Finite Impulse Response) yani sonlu dürtü tepkisi bir dijital filtre türüdür. Giriş değerleri sadece x[n] terimleri içermesinden dolayı yinelemeyen-tekrarlamayan filtre olarak da bilinir.

Alçak geçiren filtrenin frekans domenindeki karşılığı aşağıdaki gibi bir dikdörtgen penceredir.

\omega_c köşe frekansı olmak üzere yukarıdaki dikdörtgen pencerenin transfer fonksiyonu aşağıdaki gibidir:

\begin{align*}H(\omega)=|H(\omega)|e^{jt\omega}\end{align*}

\begin{align*}H(\omega)=\begin{cases}1,\quad|\omega|\leq\omega_c\\0,\quad\omega_c<|\omega|<\pi\end{cases}\end{align*}

M verinin DFT'sini alıp, bu dikdörtgen pencere ile çarptıktan sonra IDFT'sini alırsak alçak geçiren filtreyi gerçekleştirmiş oluruz. Zaman domeninden frekans domenine ve frekans domeninden zaman domenine geçiş, M'nin büyüklüğüne göre yüksek miktarda işlem yükü getirir. Frekans domeninde çarpma işlemi zaman domeninde konvolüsyona denk gelir.

\begin{align*}\mathcal{F}^{-1}\{X(f)\cdot H(f)\}=x(t)\ast h(t)=y(y)\end{align*}

Transfer fonksiyonunun zaman domenindeki karşılığını IDFT ile bulabiliriz:

\begin{align*}h_d(t)=\frac{1}{2\pi}\int_{-\pi}^\pi H_d(\omega)e^{jt\omega}\,d\omega=\frac{1}{2\pi}\int_{-\omega_c}^{\omega_c}e^{jt\omega}\,d\omega\end{align*}

\begin{align*}h_d(t)=\frac{1}{2\pi}\Bigg[\frac{e^{jt\omega}}{jt}\Bigg]_{-\omega_c}^{\omega_c}=\frac{1}{2\pi}\frac{e^{jt\omega_c}-e^{-jt\omega_c}}{jt}=\frac{1}{2\pi}\frac{2j\sin(t\omega_c)}{jt}\end{align*}

\begin{align*}h_d(t)=\frac{1}{\pi}\frac{\sin(t\omega_c)}{t}=\frac{\omega_c}{\pi}sinc\bigg(\frac{t\omega_c}{\pi}\bigg)\end{align*}

f_c köşe (kesim) frekansı, f_s sampling (örnekleme) frekansı olmak üzere \omega_c=2\pi\frac{f_c}{f_s} şeklinde normalize edilir. \omega_c nyquist teoremine göre [0, \pi) arasında değerler alabilir.

sinc\Big(\frac{t\omega_c}{\pi}\Big) fonksiyonu sonsuza uzanan bir fonksiyon olduğunda gerçekleştirilebilir bir filtre yapılamaz. Bunun yerine h_d(t) fonksiyonunu w(t) fonksiyonu ile çarparak kırpalım(pencereleyelim):

\begin{align*}w[n]=\begin{cases}1,\quad |n|\leq\frac{N}{2}\\0,\quad\text{diger}\end{cases}\end{align*}

\begin{align*}h_N[n]=h_d[n]\cdot w[n]\end{align*}

\begin{align*}h_N[n]=\begin{cases}\frac{\omega_c}{\pi}sinc\Big(\frac{n\omega_c}{\pi}\Big),\quad |n|\leq\frac{N}{2}\\\quad\quad0,\quad\quad\quad\quad\text{diger}\end{cases}\end{align*}

Burada N filtrenin derecesini belirtir. N değeri arttıkça frekans tepkisi ideale yaklaşır.

h_N[n] fonksiyonunun x[t] fonksiyonu ile konvolüsyon işlemine sokarsak FIR filtreyi gerçekleştirmiş oluruz.

\begin{align*}y[n]=\sum_{i=0}^{N}x[n-i]\cdot h[i]\end{align*}

\begin{align*}y[n]=\frac{\omega_c}{\pi}\sum_{i=0}^{N}x[n-i]\cdot sinc\bigg[\frac{\omega_c}{\pi}\Big(n-\frac{N}{2}\Big)\bigg]\end{align*}

Matlab Uygulaması:

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.