이번글에서는 이산푸리에 변환 필터뱅크 (DFT Filter Bank)에 대해 알아보겠습니다. DFT filter bank 는 말그대로 출력값이 DFT값이 나오도록 하는 필터 뱅크 입니다.
DFT Filter bank
DFT Filter bank 또한 디지털 필터 뱅크이죠. 디지털 필터 뱅크에 대해서는 이 글([음성신호처리] Digital Filter Banks (디지털 필터 뱅크))을 한번 보시고요.
(Uniform) DFT filter bank diagram
DFT filter bank 를 나타내는 그림은 아래와 같습니다. 신호 $x[n]$을 딜레이시킨후에 어떤 매트릭스 (DFT 매트릭스)에 곱하는 형태입니다. 그리고 괄호 열고 (Uniform)이라는 말을 붙혔는데요. DFT 행렬을 곱하기 전후에 아무 필터도 통과하지 않기 때문에 이름을 Uniform DFT filter bank diagram 이라고 지었습니다.
이제 세세하게 알아보도로 하죠. delay 에 의해 신호 $s$가 만들어집니다.
$$s_i[n] = x[n-i]$$
여기서 DFT는 M point DFT 를 사용할 것인데요. 이 때 사용하는 matrix 는 M x M 사이즈의 matrix 입니다.
$$\mathbf{W} = [W_km], W_km = W^{km}, W=e^{-j \frac{2\pi}{M}}$$ 이것을 이용하면 $x_k[n]$은 아래와 같이 표현됩니다.
$$x_k[n] = \sum_{i=0}^{M-1} s_i[n] W^{-ki}=\sum_{i=0}^{M-1} x[n-i] W^{-ki}$$
여기에 z transform 을 적용하면 식이 아래와 같이 바뀌구요.
$$X_k(z) = \sum_{i=0}^{M-1} X(z) z^{-i} W^{-ki}= X(z)\sum_{i=0}^{M-1} (z W^{k})^{-i}$$
여기서 $H_0(z) = \sum_{i=0}^{M-1} z^{-i}$라고 하고 $H_k(z) = H_0(zW^k)$이라 하면 아래와 같은 식으로 변형됩니다.
$$X_k(z) = H_k(z ) X(z)$$
여기서 $H_0(z)$는 이동평균필터의 frequency response를 활용하면 구해집니다.
$$ \mid H_0(e^{j\omega}) \mid = \mid \sin (\frac{M\omega}{2}) / \sin (\frac{\omega}{2}) \mid $$
여기서 관찰해보면 $H_k(e^{j\omega}) = H_0(e^{j(\omega- \frac{2\pi k }{M})})$이 성립하는 것을 알 수 있죠. 이점을 이용해서 관찰하면 위와 같이 $H_k$간에 overlap이 많다는 것을 확인할 수 있네요.
DFT filterbank 에 대한 해석
어쨋든 위와 같이 계산을 했는데요. DFT filterbank 에 대한 해석은 어떻게 해야 할까요? 그것은 식을 좀 살펴보면 알 수 있어요.
$$x_k(n+M-1) = \sum_{i=0}^{M-1} x[n+M-1-i]W^{-ki} = W^k \sum_{l=0}^{M-1} x[n+1] W^{kl}$$
위의 식을 관찰하면 $x_k(n+M-1)$는 $x[n], x[n+1],..,x[n+M-1]$의 DFT의 k번째 coefficient에 $W^k$를 곱한 것을 알 수 잇쬬. 그리고 $x_k(n+M-1)$의 magnitude는 $x[n], x[n+1],..,x[n+M-1]$의 DFT의 k번째 coefficient의 magnitude와 동일한 것을 알 수 있습니다. 어쨋거나 저쨋거나, phase 차이가 나는 DFT임을 알 수 있네요. $n$이 흘러감에 따라 $x_k(n+M-1)$은 계속해서 업데이트 된다는 것을 알 수 있습니다.
Uniform DFT filterbank 의 문제
Uniform DFT filterbank 의 filter들 $H_k$는 overlap 이 많아서요. 이 overlap 을 줄이기 위해서 filter를 디자인할 수 있습니다. 대표적으로 윈도우를 곱하는 방식이 있겠네요.
출처