{{위키데이터 속성 추적}}
[[파일:FIR Filter General.svg|섬네일|250px|일반적인 ''n''차의 유한 임펄스 출력값과, 각자의 독립적인 지연소자 ''d''<sub>i</sub>, 와 증폭 이득''a''<sub>i</sub>로 구성된다.]]
[[신호처리]]에서 '''디지털 필터'''는 신호의 관점에서 줄이거나 강조하기 위해 샘플링되고, 이산 신호상에서 수학적 동작을 수행하는 장치이다. 이는 연속신호인 아날로그 신호에서 동작하는 전자회로인 전자 필터인 아날로그 필터의 디지털 버전인 것이다.

디지털 필터 장치는 보통 입력신호를 샘플링하는 ADC(analog-to-digital converter; [[아날로그-디지털 변환회로]])와 마이크로프로세서, 그리고 필터계수와 데이터를 저장하는 메모리 같은 부변 부품으로 이루어져 있다. 마지막으로 DAC(digital-to-analog converter; [[디지털-아날로그 변환회로]])를 통해 아날로그 출력신호를 만들어 낸다. 마이크로프로세서에서 돌아가는 소프트웨어는 ADC로부터 받은 숫자를 이용하여 필요한 수학적 연산을 수행함에 의해 디지털 필터를 구현한다. 어떤 고성능의 응용에선, 범용 마이크로프로세서 대신에 필터같은 고속 동작을 위한 병렬구조로 된 FPGA나 ASIC, 또는 특별한 DSP을 이용하여 처리하기도 한다.

디지털 필터는 아날로그 필터에 비해 복잡도가 올라가서 매우 비싸진다. 그러나 아날로그 필터에서 불가능하거나 만들기 어려운 많은 실전 설계 영역에서 많이 사용되고 있다. 실시간 아날로그 장치의 대용으로 사용했을때, 디지털 필터는 ADC, DAC, anti-aliasing filter에 관련되거나 그들 구현에서 지연같은 문제소지(예로 입력과 반응사이의 시간차)를 가지고 있다.

디지털 필터는 일반적으로 사용되고 있고, 라디오, 핸드폰, AV 수신기등의 전자기기의 핵심적인 기능중에 하나이다.

==특징==
디지털 필터는 전달함수, 즉 차분방정식에 의해 특성 지어진다. 전달함수의 수학적인 해석은 입력에 대한 반응을 어떻게 하는지 묘사할 수 있다. 하나의 필터를 설계할 때, 주어진 문제(예시로 어떤 cutoff 주파수에서 2차 LPF)에 적절하게 spec을 개발하고, 그 다음은 그 spec을 만족하는 전달함수를 만드는 것이다.

선형이고, 시불변인 디지털 필터의 전달 함수는 Z-변환으로 전달함수를 표시할 수 있다. 만약 코잘(Causal)장치이면 다음의 형태를 가진다.

:<math>H(z) = \frac{B(z)}{A(z)}  = \frac{{b_{0}+b_{1}z^{-1}+b_{2}z^{-2} + \cdots + b_{N}z^{-N}}}{{1+a_{1}z^{-1}+a_{2}z^{-2} + \cdots +a_{M}z^{-M}}}</math>

여기서 필터의 차수는 ''N'' 또는 ''M''보다 크다. 여기서의 전달함수에 대한 보충 내용은 [[Z-transform#Linear constant-coefficient difference equation|''Z''-transform's LCCD equation]]으로 정의된다.

이 수식은 입력(분자)와 출력(분모)을 모두 가지는 형태로, 이런 모양을 무한 임펄스 출력(IIR, infinite impulse response) 행동을 한다. 그러나 분모가 1이 될 경우 이는 유한 임펄스 출력(FIR, finite impulse response)가 된다.{{출처|날짜=2022-11-10}}

===해석 기법===

수학적 많은 기법으로 주어진 디지털 필터의 행동을 해석하는데 사용될 수 있다. 이들의 많은 해석 기법이 설계에 이용되고, 필터의 능력치를 측정하는 기본이 된다.

특히 임펄스 같은 간단한 입력에 어떻게 반응하는가를 계산함에 의해 필터의 특성 지을 수 있고, 더욱 복잡한 신호에 대한 필터의 반응을 계산하기 위해 이 정보를 확장할 수 있다.

====임펄스 반응====
임펄스 반응 값은 <math>h[k]</math> 또는 <math>h_k</math>로 표시하며, 필터가 크로네커 델타 함수에 응답하는 방식을 측정한다.<ref>{{웹 인용|url=http://www.just.edu.jo/~hazem-ot/Lab.4&5.%20FIR%20Filters.pdf|title=Lab.4&5. Introduction to FIR Filters|publisher=Jordan University of Science and Technology-Faculty of Engineering|archive-url=https://ghostarchive.org/archive/20221009/http://www.just.edu.jo/~hazem-ot/Lab.4&5.%20FIR%20Filters.pdf|archive-date=2022-10-09|url-status=live|access-date=13 July 2020}}</ref> 예를 들어, 미분 방정식이 주어지면, <math>k \ne 0</math>에 대해 <math>x_0 = 1</math> 또는 <math>x_k = 0</math> 으로 설정한다. 임펄스 응답은 필터 동작의 특성이다. 디지털 필터는 일반적으로 무한 임펄스 응답(IIR)과 유한 임펄스 응답(FIR)의 두 가지 범주로 간주된다. 선형 시불변 FIR 필터의 경우 임펄스 응답은 필터 계수 시퀀스와 정확히 동일하므로 다음과 같다.

: <math>\ y_n= \sum_{k=0}^{N} b_{k} x_{n-k} =\sum_{k=0}^{N} h_{k} x_{n-k}</math>

반면에 IIR 필터는 재귀적이며 출력은 현재 및 이전 입력과 이전 출력 모두에 따라 달라진다. 따라서 IIR 필터의 일반적인 형태는 다음과 같다.

: <math>\ \sum_{m=0}^{M} a_{m}y_{n-m} = \sum_{k=0}^{N} b_{k} x_{n-k}</math>

임펄스 응답을 플로팅하면 필터가 갑작스럽고 순간적인 교란에 어떻게 반응하는지 알 수 있다. IIR 필터는 항상 재귀적이다. 재귀 필터가 유한 임펄스 응답을 가질 수 있지만 비재귀 필터는 항상 유한 임펄스 응답을 가진다. 예를 들어 재귀적으로 및 비재귀적으로 모두 구현할 수 있는 이동 평균(MA) 필터가 있다.{{출처|날짜=2022-11-10}}

====차분 방정식(Difference equation) ====

이산(discrete-time) 장치에서, 디지털 필터는 z변환을 통해, 전달함수는 [[Z-transform#Linear_constant-coefficient_difference_equation|linear constant-coefficient difference equation]](LCCD)로 변환함에 의해 구현되어 질 수 있다. 이산 전달 함수는 두 개의 다항식의 비로 쓰여진다. 예시는 다음과 같다.

:<math>H(z) = \frac{(z+1)^2} {(z-\frac{1}{2}) (z+\frac{3}{4})}</math>

이를 풀어보면 :
:<math>H(z) = \frac{z^2+ 2z +1} {z^2 +\frac{1}{4} z - \frac{3}{8}}</math>

그리고 상응하는 필터(코잘(Causal) 필터)를 만들기 위해, 분모와 분자가 <math>z</math>의 더 높은 차수로 나누어진다.

:<math>
H(z) = \frac{1 + 2z^{-1} +z^{-2}} {1 +\frac{1}{4} z^{-1} - \frac{3}{8} z^{-2}} = \frac{Y(z)}{X(z)}
</math>

분모의 계수, <math>a_{k}</math>, 는 역방향('feed-backward') 계수이며, 분자의 계수는 순방향('feed-forward') 계수 <math>b_{k}</math>이다. 결과는 차분방정식으로 다음과 같다.
:<math>
y[n] = -\sum_{k=1}^{M} a_{k} y[n-k] + \sum_{k=0}^{N} b_{k} x[n-k]
</math>

또는 그 예로

:<math>
\frac{Y(z)}{X(z)} = \frac{1 + 2z^{-1} +z^{-2}} {1 +\frac{1}{4} z^{-1} - \frac{3}{8} z^{-2}}
</math>

항을 재정리하면

:<math>
\Rightarrow (1 +\frac{1}{4} z^{-1} - \frac{3}{8} z^{-2}) Y(z) = (1 + 2z^{-1} +z^{-2}) X(z)
</math>

그 다음 역 ''z'' 변환을 하면

:<math>
\Rightarrow y[n] + \frac{1}{4} y[n-1] - \frac{3}{8} y[n-2] = x[n] + 2x[n-1] + x[n-2]
</math>

마지막으로, <math>y[n]</math>에 대해 풀면

:<math>
y[n] = - \frac{1}{4} y[n-1] + \frac{3}{8} y[n-2] + x[n] + 2x[n-1] + x[n-2]
</math>

이 방정식은 과거의 출력항 <math>y[n-p]</math>, 현재의 입력 <math>x[n]</math>, 그리고 과거의 입력<math>x[n-p]</math>으로 다음 출력 샘플 <math>y[n]</math>을 어떻게 계산하는가를 보여준다.

== 같이 보기 ==
* [[베셀 필터]]
* [[하이패스 필터]]
== 각주 ==
<references />

{{전거 통제}}

[[분류:디지털 신호 처리]]
[[분류:신호 처리 필터|*]]
[[분류:신시사이저 모듈]]