유한 임펄스 응답

신호 처리에서 **유한 임펄스 응답**(finite impulse response, **FIR**) **필터**는 필터의 임펄스 응답(또는 유한 길이 입력에 대한 응답)이 유한한 시간 안에 0으로 수렴하기 때문에 지속 시간이 유한하다. 이는 내부 피드백을 가질 수 있고 무한정 응답할 수 있는(일반적으로 감쇠되는) 무한 임펄스 응답 (IIR) 필터와 대조된다.

N차 이산 시간 FIR 필터의 임펄스 응답(즉, 크로네커 델타 입력에 대한 응답 출력)은 정확히 N+1 샘플(첫 번째 0이 아닌 요소부터 마지막 0이 아닌 요소까지) 동안 지속된 후 0으로 수렴한다.

FIR 필터는 이산 시간 또는 연속 시간, 그리고 디지털 또는 아날로그일 수 있다.

## 정의

[섬네일|300px|right|N차 직접 형식 이산 시간 FIR 필터. 상단 부분은 N + 1 탭이 있는 N단계 지연선이다. 각 단위 지연은 [Z변환 표기법에서 z-1 연산자이다.]]

[섬네일|300px|right|alt=격자형 F I R 필터의 묘사|N차 격자형 이산 시간 FIR 필터. 각 단위 지연은 [Z변환 표기법에서 z-1 연산자이다.]]

N차 인과적 이산 시간 FIR 필터의 경우, 출력 시퀀스의 각 값은 가장 최근 입력 값들의 가중 합이다.

:\begin{align}
 y[n] &= b_0 x[n] + b_1 x[n-1] + \cdots + b_N x[n-N] \\
      &= \sum_{i=0}^N b_i\cdot x[n-i],
\end{align}

여기서:
* x[n]은 입력 신호,
* y[n]은 출력 신호,
* N은 필터 차수;  N차 필터는 우변에  N + 1 개의 항을 가진다.
* b_i 는  0 \le i \le N 인  N^\text{th}차 FIR 필터의 i번째 순간에서의 임펄스 응답 값이다. 필터가 직접 형식 FIR 필터인 경우,  b_i 는 필터의 계수이기도 하다.

이 계산은 이산 컨볼루션이라고도 알려져 있다.

이 항들의  x[n-i]는 많은 구현 또는 블록 다이어그램에서 곱셈 연산에 지연된 입력을 제공하는 탭 지연선의 구조를 기반으로 이라고 불린다. 예를 들어, 5차/6탭 필터라고 말할 수 있다.

정의된 필터의 임펄스 응답은 유한한 기간 동안 0이 아니다. 0을 포함하면 임펄스 응답은 무한 시퀀스이다.
:
  h[n] = \sum_{i=0}^N b_i\cdot \delta[n-i] =
  \begin{cases}
    b_n & 0 \le n \le N\\
      0 & \text{otherwise}.
  \end{cases}


FIR 필터가 비인과적이면 임펄스 응답의 0이 아닌 값 범위가 n=0 이전에 시작될 수 있으며, 정의 공식은 적절하게 일반화된다.

## 속성

FIR 필터는 무한 임펄스 응답 (IIR) 필터보다 선호되는 몇 가지 유용한 속성을 가지고 있다. FIR 필터는:
*피드백이 필요 없다. 이는 반올림 오류가 합산된 반복으로 인해 복합적으로 발생하지 않음을 의미한다. 동일한 상대 오차가 각 계산에서 발생한다. 또한 구현을 더 간단하게 만든다.
*본질적으로 안정적이다. 출력은 입력 값의 유한한 수의 유한 배수의 합이기 때문에, 입력에 나타나는 가장 큰 값의  \sum |b_i|배보다 클 수 없다.
*계수 시퀀스를 대칭으로 만들어 선형 위상이 되도록 쉽게 설계할 수 있다. 이 속성은 데이터 통신, 지진학, 크로스오버 필터, 마스터링과 같은 위상에 민감한 응용 분야에서 때때로 요구된다.

FIR 필터의 주요 단점은 IIR 필터에 비해 비슷한 선명도 또는 선택성을 가지려면 일반 목적 프로세서에서 훨씬 더 많은 컴퓨팅 성능이 필요하다는 것이다. 특히 낮은 주파수(샘플링 속도에 상대적인) 차단이 필요할 때 그렇다. 그러나 많은 디지털 신호 처리기는 여러 응용 분야에서 FIR 필터를 IIR만큼 효율적으로 만들 수 있는 특수 하드웨어 기능을 제공한다.

## 주파수 응답

필터가 시퀀스 x[n]에 미치는 영향은 주파수 영역에서 컨볼루션 정리로 설명된다.
:\underbrace{\mathcal{F}\{x*h\}}_{Y(\omega)} = \underbrace{\mathcal{F}\{x\}}_{X(\omega)} \cdot \underbrace{\mathcal{F}\{h\}}_{H(\omega)} &nbsp; &nbsp; 및 &nbsp; &nbsp; y[n] = x[n]*h[n]= \mathcal{F}^{-1}\big\{X(\omega)\cdot H(\omega)\big\},

여기서 연산자 \mathcal{F}와 \mathcal{F}^{-1}는 각각 이산시간 푸리에 변환 (DTFT)과 그 역변환을 나타낸다. 따라서 복소수 값의 곱셈 함수 H(\omega)는 필터의 주파수 응답이다. 이는 푸리에 급수로 정의된다.
:H_{2\pi}(\omega)\ \triangleq \sum_{n=-\infty}^{\infty} h[n]\cdot \left({e^{i \omega}}\right)^{-n} = \sum_{n=0}^{N}b_n\cdot \left({e^{i \omega}}\right)^{-n},

여기서 추가된 아래 첨자는 2\pi 주기성을 나타낸다. 여기서 \omega는 정규화된 단위(샘플당 라디안)의 주파수를 나타낸다. 함수 H_{2\pi}(2\pi f')는 샘플당 주기 단위로 1의 주기성을 가지며, 이는 많은 필터 설계 응용 분야에서 선호된다.&nbsp; 나이퀴스트 진동수라고 불리는 값 \omega = \pi는 f' = \tfrac{1}{2}.&nbsp;에 해당한다. 시퀀스 x[n]에 알려진 샘플링 속도 f_s(초당 샘플 수)가 있을 때, 일반 주파수는 f = f'\cdot f_s = \tfrac{\omega}{2\pi}\cdot f_s 사이클/초 (Hz)로 정규화된 주파수와 관련된다. 반대로, 샘플당 주기를 예상하는 응용 프로그램을 사용하여 일반 주파수 f_1, f_2, 등에 대한 필터를 설계하려면 f_1/f_s,&nbsp; f_2/f_s,&nbsp; 등을 입력해야 한다.

H_{2\pi}(\omega)는 필터 임펄스 응답의 Z변환으로도 표현될 수 있다.

:
\widehat H(z)\ \triangleq \sum_{n=-\infty}^{\infty} h[n]\cdot z^{-n}.


:H_{2\pi}(\omega) = \left. \widehat H(z) \, \right|_{z = e^{j \omega}} = \widehat H(e^{j \omega}).

## 필터 설계

FIR 필터는 특정 사양을 충족하는 계수와 필터 차수를 찾는 방식으로 설계되며, 이는 시간 영역(예: matched filter) 또는 주파수 영역(가장 일반적)에서 이루어질 수 있다. 매치드 필터는 입력 신호와 알려진 펄스 파형 간의 상호 상관을 수행한다. FIR 컨볼루션은 입력 신호와 시간 역전된 임펄스 응답 사본 간의 상호 상관이다. 따라서 매치드 필터의 임펄스 응답은 알려진 펄스 파형을 샘플링하고 해당 샘플을 역순으로 필터의 계수로 사용하여 "설계"된다.

특정 주파수 응답이 필요할 때, 몇 가지 다른 설계 방법이 일반적이다.
# 창 설계 방법
# 주파수 샘플링 방법
# 최소 MSE(평균 제곱 오차) 방법
# 팍스-맥클렐런 방법 (동일 리플, 최적 또는 미니맥스 방법이라고도 함). 레메즈 교환 알고리즘은 최적의 동일 리플 계수 세트를 찾는 데 일반적으로 사용된다. 여기서 사용자는 원하는 주파수 응답, 이 응답으로부터의 오차에 대한 가중 함수, 필터 차수 N을 지정한다. 그런 다음 알고리즘은 이상적인 값으로부터 최대 편차를 최소화하는  N + 1 계수 세트를 찾는다. 직관적으로, 이는  N + 1 계수만 사용할 수 있다는 점을 감안할 때 원하는 응답에 최대한 가까운 필터를 찾는 것이다. 이 방법은 적어도 한 권의 책에 원하는 필터와 N을 입력하면 최적 계수를 반환하는 프로그램이 포함되어 있기 때문에 실제로 특히 쉽다.
# 동일 리플 FIR 필터는 DFT 알고리즘을 사용하여 설계할 수도 있다. 이 알고리즘은 반복적이다. 초기 필터 설계의 DFT는 FFT 알고리즘을 사용하여 계산된다(초기 추정값이 없는 경우 h[n]=delta[n]를 사용할 수 있음). 푸리에 영역 또는 DFT 영역에서 주파수 응답은 원하는 사양에 따라 보정된 다음 역 DFT가 계산된다. 시간 영역에서는 처음 N개의 계수만 유지된다(다른 계수는 0으로 설정됨). 그런 다음 이 프로세스는 반복적으로 반복된다: DFT가 다시 계산되고, 주파수 영역에서 보정이 적용되는 식이다.

매트랩, GNU 옥타브, 싸이랩, SciPy와 같은 소프트웨어 패키지는 이러한 다양한 방법을 적용하는 편리한 방법을 제공한다.

### 창 설계 방법

창 설계 방법에서는 먼저 이상적인 IIR 필터를 설계한 다음 무한 임펄스 응답에 유한 길이 창 함수를 곱하여 무한 임펄스 응답을 절단한다. 그 결과는 IIR 필터의 주파수 응답이 변경된 유한 임펄스 응답 필터이다. 시간 영역에서 무한 임펄스에 창 함수를 곱하면 IIR의 주파수 응답이 창 함수의 푸리에 변환(또는 DTFT)과 컨볼루션된다. 창의 주엽이 좁으면 복합 주파수 응답은 이상적인 IIR 필터의 응답에 가깝게 유지된다.

이상적인 응답은 종종 직사각형이며, 해당 IIR은 싱크함수이다. 주파수 영역 컨볼루션의 결과는 직사각형의 가장자리가 가늘어지고 통과 대역과 정지 대역에 리플이 나타나는 것이다. 역으로 작업하면 테이퍼 영역(전이 대역)의 기울기(또는 너비)와 리플의 높이를 지정할 수 있으며, 이를 통해 적절한 창 함수의 주파수 영역 매개변수를 도출할 수 있다. 필터 설계 프로그램을 반복하여 최소 필터 차수를 찾으면 임펄스 응답으로 역으로 진행할 수 있다. 또 다른 방법은 솔루션 세트를 카이저 창의 매개변수군으로 제한하는 것으로, 시간 영역과 주파수 영역 매개변수 간의 닫힌 형식 관계를 제공한다. 일반적으로 이 방법은 가능한 최소 필터 차수를 달성하지 못하지만, 동적, 즉석 필터 설계가 필요한 자동화된 응용 분야에 특히 편리하다.

창 설계 방법은 효율적인 하프밴드 필터를 만드는 데도 유리하다. 해당 싱크함수는 다른 모든 샘플 포인트(중앙 제외)에서 0이기 때문이다. 창 함수와의 곱은 0을 변경하지 않으므로 최종 임펄스 응답 계수의 거의 절반이 0이다. FIR 계산의 적절한 구현은 이 속성을 활용하여 필터 효율성을 두 배로 높일 수 있다.

### 최소 평균 제곱 오차 (MSE) 방법
**목표:**
:MSE 의미에서 FIR 필터를 설계하기 위해, 우리가 얻은 필터와 원하는 필터 사이의 평균 제곱 오차를 최소화한다.
::\text{MSE}=f_s^{-1} \int_{-f_s/2}^{f_s/2} |H(f)-H_d(f)|^2\,df  , 여기서 f_s\,는 샘플링 주파수, H(f)\,는 우리가 얻은 필터의 스펙트럼, H_d(f)\,는 원하는 필터의 스펙트럼이다.

**방법:**
:N점 FIR 필터  h[n] 와 r[n] = h[n+k], k = \frac{(N-1)}{2}가 주어졌을 때.
:1단계:  h[n] 이 짝수 대칭이라고 가정한다. 그러면 r[n]의 이산 시간 푸리에 변환은 다음과 같이 정의된다.
::R(F) = e^{j2 \pi Fk}H(F) = \sum_{n=0}^k s[n] \cos (2 \pi nF) 
:2단계: 평균 제곱 오차를 계산한다.
::\text{MSE}=\int_{-1/2}^{1/2} |R(F)-H_d(F)|^2\,dF 
::따라서,
::\text{MSE}= \int_{-1/2}^{1/2} \sum_{n=0}^k s[n] \cos (2 \pi nF) \sum_{\tau=0}^k s[\tau] \cos (2 \pi \tau F)\,dF -2\int_{-1/2}^{1/2} \sum_{n=0}^k s[n] \cos (2 \pi nF) H_d\,dF + \int_{-1/2}^{1/2} H_d(F)^2\,dF
:3단계: s[n]에 대한 MSE의 편도 함수를 수행하여 평균 제곱 오차를 최소화한다.
:: \frac{\partial \text{MSE}}{\partial s[n]} = 2\sum_{\tau=0}^k s[\tau]  \int_{-1/2}^{1/2} \cos (2 \pi nF) \cos (2 \pi \tau F) \,dF - 2\int_{-1/2}^{1/2} H_d(F)^2 \cos (2 \pi nF)\,dF = 0
::정리 후, 다음과 같다.
:: s[0] = \int_{-1/2}^{1/2} H_d(F)\, dF 
:: s[n] = \int_{-1/2}^{1/2} \cos (2 \pi nF) H_d(F) \,dF, \ \text{ for } n \ne 0
:4단계:  s[n] 을  h[n] 의 표현으로 되돌린다.
::h[k] = s[0], h[k+n] = s[n]/2, h[k-n]=s[n]/2, \; for \; n=1,2,3, \ldots, k, \text{ where } k = (N-1)/2  이고  h[n] =0 \text{ for } n 

또한, 가중 함수 W(f)를 추가하여 필요에 따라 통과 대역과 정지 대역의 중요도를 다르게 처리할 수 있다.
그러면 MSE 오차는 다음과 같다.
: \text{MSE} =\int_{-1/2}^{1/2} W(F)|R(F)-H_d(F)|^2\,dF 

## 이동평균 예시

이동평균 필터는 매우 간단한 FIR 필터이다. 특히 데시메이션이 뒤따르거나 주파수 영역에서 싱크일 때 박스카 필터라고도 불린다. 필터 계수  b_0, \ldots, b_N는 다음 방정식을 통해 찾을 수 있다.
:b_i=\frac{1}{N+1}

더 구체적인 예를 들기 위해 필터 차수를 선택한다.
:N = 2

결과 필터의 임펄스 응답은 다음과 같다.
:h[n] = \frac{1}{3}\delta[n] + \frac{1}{3}\delta[n-1] + \frac{1}{3}\delta[n-2]

오른쪽 블록 다이어그램은 아래에서 논의된 2차 이동평균 필터를 보여준다. 전달 함수는 다음과 같다.

:H(z) = \frac{1}{3} + \frac{1}{3}z^{-1} + \frac{1}{3}z^{-2} = \frac{1}{3}\frac{z^{2} + z + 1}{z^{2}}.

다음 그림은 해당 극점-영점 다이어그램을 보여준다. 0 주파수(DC)는 (1, 0)에 해당하며, 양의 주파수는 원 주위를 반시계 방향으로 나이퀴스트 진동수 (−1, 0)까지 진행한다. 두 극점은 원점에 위치하며, 두 영점은  z_1 = -\frac{1}{2} + j\frac{\sqrt{3}}{2},  z_2 = -\frac{1}{2} - j \frac{\sqrt{3}}{2}에 위치한다.

정규화된 주파수 ω에 대한 주파수 응답은 다음과 같다.
:
\begin{align}
H\left(e^{j\omega}\right) &= \frac{1}{3} + \frac{1}{3}e^{-j\omega} + \frac{1}{3}e^{-j2\omega}\\
&= \frac{1}{3}e^{-j\omega}\left(1+2\cos(\omega)\right).
\end{align}


 H\left(e^{j\omega}\right)의 크기 및 위상 성분이 그림에 그려져 있다. 그러나 이러한 플롯은 임펄스 응답의 이산 푸리에 변환 (DFT)을 수행하여 생성할 수도 있다.
대칭성으로 인해 필터 설계 또는 보기 소프트웨어는 종종 [0, π] 영역만 표시한다. 크기 플롯은 이동평균 필터가 낮은 주파수를 1에 가까운 이득으로 통과시키고 높은 주파수를 감쇠시키므로 대략적인 로우패스 필터임을 나타낸다. 위상 플롯은 크기가 0이 되는 두 주파수에서의 불연속성을 제외하고는 선형이다. 불연속성의 크기는 π이며, 이는 부호 반전을 나타낸다. 이들은 선형 위상의 속성에 영향을 미치지 않으며, 마지막 그림에 나와 있다.

## 같이 보기
* 전자 필터
* 필터 (신호 처리)
* Z변환 (특히 선형 상수 계수 차분 방정식)

## 내용주

## 각주


분류:디지털 신호 처리
분류:필터 이론