FIR 필터 설계 방법
Finite Impulse Response(FIR) 필터는 이산 웨이블릿 변환에서 필터 뱅크를 구성하는 기본적인 요소로, 입력 신호를 일정한 길이의 필터 커널을 사용하여 변환한다. FIR 필터는 입출력의 관계가 유한한 길이의 임펄스 응답으로 표현되며, 그 설계는 웨이블릿 변환의 성능에 직접적인 영향을 미친다. 이번 절에서는 FIR 필터의 수학적 배경과 설계 방법을 자세히 설명한다.
FIR 필터의 수학적 표현
FIR 필터의 기본 형태는 다음과 같이 표현된다:
여기서:
$y[n]$은 출력 신호,
$x[n]$은 입력 신호,
$h[k]$는 필터 계수 (또는 커널),
$N$은 필터 계수의 수이다.
이 식은 입력 신호 $x[n]$에 필터 커널 $h[k]$를 컨볼루션(convolution)하는 과정을 나타낸다.
필터 설계의 핵심 요소
FIR 필터 설계에서 중요한 요소는 다음과 같다:
필터 계수 $h[k]$: 필터의 성능을 결정하는 주요 요소로, 각 계수는 특정한 주파수 성분을 제어하는 역할을 한다.
필터의 길이 $N$: 필터의 길이가 길수록 더 정밀한 주파수 분해능을 가질 수 있지만, 계산 복잡도가 증가한다.
대칭성과 비대칭성: 필터의 계수가 대칭일 경우 필터는 선형 위상을 가지며, 이는 신호의 위상 왜곡을 최소화하는 데 유리한다.
FIR 필터의 설계 방법
FIR 필터를 설계하는 방법은 여러 가지가 있으며, 주요 설계 방법을 아래에 소개한다.
창 함수(Window Function) 방법
창 함수 방법은 이상적인 필터의 임펄스 응답을 트렁케이션(truncation)하여 실현 가능한 FIR 필터로 변환하는 방식이다. 다음과 같은 단계로 설계할 수 있다:
이상적인 필터의 임펄스 응답 계산: 먼저 원하는 주파수 응답을 가지는 이상적인 필터의 임펄스 응답 $\mathbf{h}_{\text{ideal}}$을 정의한다. 예를 들어, 저역 통과 필터(Low-Pass Filter, LPF)의 경우:
여기서 $\omega_c$는 컷오프 주파수이다.
창 함수 선택: 이상적인 임펄스 응답은 무한한 길이를 가지므로, 이를 유한 길이로 만들기 위해 창 함수 $\mathbf{w}[n]$를 곱해준다. 일반적으로 사용하는 창 함수로는 Hamming, Hanning, Blackman 창 등이 있다.
최종 FIR 필터 계수 계산:
주파수 샘플링 방법
이 방법은 필터의 주파수 응답을 샘플링한 후, 이를 이산 푸리에 변환(DFT)으로 변환하여 FIR 필터를 설계하는 방식이다. 주파수 영역에서 직접 설계할 수 있기 때문에 주파수 특성을 정확히 제어할 수 있는 장점이 있다.
목표 주파수 응답 정의: 원하는 주파수 응답 $\mathbf{H}(\omega)$를 정의한다.
주파수 샘플링: $\mathbf{H}(\omega)$를 이산적인 주파수 점에서 샘플링하여 $\mathbf{H}[k]$를 얻는다.
역 이산 푸리에 변환(IDFT): 샘플링된 주파수 응답을 시간 영역으로 변환하여 필터 계수 $\mathbf{h}[n]$를 계산한다.
Least Squares 설계 방법
Least Squares 설계는 필터의 주파수 응답이 특정한 목표 주파수 응답에 최대한 근접하도록 설계하는 방법이다. 이 방법은 에러 함수를 최소화하는 것을 목표로 한다. 주파수 응답에서의 오차를 최소화하므로, 원하는 주파수 대역에서 정확한 필터링이 가능해진다.
목표 주파수 응답 정의: 먼저 설계하고자 하는 필터의 목표 주파수 응답 $\mathbf{H}_d(\omega)$를 정의한다.
오차 함수 설정: 주파수 대역에서의 오차를 측정하기 위해 오차 함수 $E(\omega)$를 다음과 같이 정의한다:
여기서 $\mathbf{H}(\omega)$는 실제 필터의 주파수 응답이다. 3. Least Squares 최적화: 오차 $E(\omega)$의 제곱합을 최소화하는 방식으로 최적화 문제를 설정하고 해결하여 FIR 필터 계수 $\mathbf{h}[n]$를 도출한다.
이 방법은 필터의 길이와 주파수 대역별 정확도를 조절할 수 있는 유연성을 제공한다.
설계 예제: Low-Pass FIR 필터 설계
여기서는 창 함수 방법을 이용하여 간단한 저역 통과 FIR 필터를 설계하는 과정을 예제로 소개한다.
필터 사양 설정: 컷오프 주파수 $\omega_c$를 $0.4 \pi$로 설정하고, 필터 계수의 수를 $N = 21$로 정한다. 필터의 길이가 홀수이므로 대칭적인 필터를 설계하게 된다.
이상적인 임펄스 응답 계산:
Hamming 창 적용:
최종 FIR 필터 계수는:
이렇게 설계된 FIR 필터는 주파수 특성에서 저역 통과 기능을 수행하며, 윈도우를 적용함으로써 리플(ripple)과 같은 효과를 제어할 수 있다.
대칭 필터와 선형 위상
FIR 필터는 대칭 또는 비대칭의 계수 구조를 가질 수 있다. 대칭 필터의 경우 $h[n] = h[N-1-n]$이 성립하며, 이는 선형 위상 특성을 보장한다. 선형 위상 필터는 신호를 필터링할 때 위상 왜곡이 없다는 중요한 장점을 제공한다.
대칭 필터의 예시
이 필터는 대칭적이며, 이를 사용하면 입력 신호가 필터링된 후에도 원래 신호의 위상이 보존된다.
FIR 필터 설계 시 고려 사항
FIR 필터를 설계할 때는 다음의 사항을 고려해야 한다:
필터의 길이 $N$: 필터의 길이가 길수록 주파수 특성이 더 정밀해지지만, 실시간 처리를 위한 계산량이 증가한다.
대역폭과 리플: 필터의 대역폭 내에서의 평탄함과 통과 대역 및 저지 대역 사이의 전이 대역폭을 조절하는 것이 중요하다.
설계 방법의 선택: 창 함수, 주파수 샘플링, Least Squares 등 다양한 방법 중에서 특정 응용 분야에 적합한 방법을 선택해야 한다.
FIR 필터 설계의 예제 코드
아래의 코드는 간단한 FIR 필터를 C++로 구현하는 예제이다. 이 코드는 특정한 필터 계수를 설정하고 입력 신호에 대해 필터링을 수행하는 방식으로 작성되었다:
이 예제 코드에서는 fir_filter 함수가 입력 신호와 필터 계수를 받아 필터링된 결과를 반환한다. 필터의 계수를 바꾸거나 필터 길이를 조정하여 다양한 필터링 효과를 실험할 수 있다.
Last updated