디지털 필터

편집 역사 토론
전자공학 수치해석 마지막 수정: 2026-08-03 04:12:41

1. 개요[편집]

디지털 필터(digital filter)는 이산 시간 신호를 입력으로 받아, 원하는 주파수 성분은 통과시키고 나머지는 감쇠시키는 선형 시불변(LTI) 연산자다. 아날로그 필터가 저항·커패시터·연산증폭기로 만들어지는 물건이라면, 디지털 필터는 그냥 곱셈과 덧셈의 나열이다. 소자 오차도 없고 온도 드리프트도 없고, 계수를 바꾸면 특성이 바뀐다. 대신 표본화라는 원죄를 짊어지고 있어서 표본화 정리를 어기는 순간 앨리어싱이 모든 것을 망친다.

핵심 구조는 딱 한 줄이다. 차분방정식

y[n]=k=0Mbkx[nk]k=1Naky[nk]y[n] = \sum_{k=0}^{M} b_k\, x[n-k] - \sum_{k=1}^{N} a_k\, y[n-k]

에서 뒤쪽 합(되먹임)이 있느냐 없느냐가 FIR과 IIR을 가른다. 이 한 줄에서 안정성, 위상 특성, 계수 감도, 고정소수점 한계 사이클까지 전부 파생된다.

2. FIR과 IIR[편집]

FIR(Finite Impulse Response, 유한 임펄스 응답)은 ak=0a_k = 0인 경우다. 임펄스를 넣으면 M+1M+1 개 표본 뒤에 출력이 정확히 0이 된다. 되먹임이 없으니 전달함수의 극점은 전부 원점에 몰려 있고, 따라서 계수가 무엇이든 항상 안정하다. 게다가 계수를 대칭(bk=bMkb_k = b_{M-k}) 또는 반대칭으로 두면 정확한 선형위상을 얻는다. 이때 군지연은 모든 주파수에서 M/2M/2 표본으로 일정하다. 파형 모양을 보존해야 하는 심전도, 지진파, 오실로스코프 계측에서 FIR이 국룰인 이유다.

IIR(Infinite Impulse Response)은 되먹임이 있어서 임펄스 응답이 원리상 영원히 꼬리를 끈다. 대신 같은 차단 특성을 훨씬 적은 차수로 만든다 — 60 dB 저지대역을 FIR로 짜면 탭 수백 개인데 IIR 타원 필터는 6~8차면 끝나는 경우가 흔하다. 대가는 두 가지다. 극점이 단위원 안에 있어야만 안정하고, 위상이 비선형이다. 즉 주파수마다 지연이 달라 파형이 뭉개진다.

FIRIIR
안정성무조건 안정극점 위치에 의존
위상정확한 선형위상 가능일반적으로 비선형
차수높음(연산량 큼)낮음(효율적)
계수 감도낮음높음(직접형에서 특히)
설계창 함수, 파크스-맥클렐런아날로그 프로토타입 + 변환

3. 극·영점 배치가 만드는 주파수 응답[편집]

z 변환으로 넘어가면 전달함수는 유리함수가 된다.

H(z)=B(z)A(z)=gi=1M(zzi)j=1N(zpj)H(z) = \frac{B(z)}{A(z)} = g\,\frac{\prod_{i=1}^{M}(z - z_i)}{\prod_{j=1}^{N}(z - p_j)}

주파수 응답은 z=ejωz = e^{j\omega}, 즉 단위원 위를 한 바퀴 도는 것으로 얻는다. 그래서 크기 응답에는 아주 예쁜 기하학적 해석이 붙는다.

H(ejω)=gi(단위원 위 점에서 영점 zi까지 거리)j(단위원 위 점에서 극점 pj까지 거리)|H(e^{j\omega})| = |g| \cdot \frac{\prod_i \bigl(\text{단위원 위 점에서 영점 } z_i \text{까지 거리}\bigr)}{\prod_j \bigl(\text{단위원 위 점에서 극점 } p_j \text{까지 거리}\bigr)}

단위원 에 영점을 찍으면 그 주파수는 완전히 죽는다(노치 필터의 원리 — 60 Hz 전원 잡음 제거가 대표적). 단위원 가까이 안쪽에 극점을 찍으면 그 주파수에서 분모가 작아져 뾰족한 공진 피크가 생긴다. 극점을 단위원에 붙일수록 Q가 올라가지만, 동시에 계수 양자화 한 번에 밖으로 튀어나가 발산할 위험도 같이 올라간다. 안정성 판정은 결국 “모든 극점의 pj<1|p_j| < 1“이며, 이는 연속시간에서 좌반평면 조건에 대응한다. 되먹임 루프의 안정 여유를 보는 관점은 나이퀴스트 안정성 판별법이나 위상 여유와 같은 뿌리다.

버터워스 저역통과를 아날로그 프로토타입 극점 → 주파수 워핑 사전보정 Ω_c=tan(ω_c/2) → 쌍선형 변환 → 2차 절(SOS) 종속 연결 순서로 그 자리에서 설계한다. 단위원 위를 도는 커서에서 각 극·영점까지 그은 선분의 거리 곱이 그대로 |H(e^jω)| 가 되는 것을 매 프레임 계수 평가값과 대조한다(상대차 ~1e−15). 설계한 ω_c 에서 실측 −3.010300 dB 가 찍히는 것이 워핑 사전보정이 맞았다는 증거이며, 차수 N 을 올리면 극점이 단위원 쪽으로 몰려 롤오프가 −6.02N dB/옥타브로 가팔라지고 아래 임펄스 응답의 울림이 함께 길어진다.

4. 설계법[편집]

4.1. FIR — 창 함수법과 등리플[편집]

가장 직관적인 방법은 이상적 저역통과 필터의 임펄스 응답(무한히 긴 sinc)을 잘라 쓰는 것이다. 그런데 그냥 자르면(직사각 창) 깁스 현상이 터져서 통과대역 가장자리에 9% 정도의 오버슈트가 남고, 이건 탭을 아무리 늘려도 사라지지 않는다. 그래서 윈도 함수로 부드럽게 감쇠시킨다. 해밍·블랙만·카이저 창이 표준이고, 특히 카이저 창은 파라미터 β\beta 하나로 “저지대역 감쇠 vs 천이대역 폭”을 연속적으로 조절할 수 있어 실무에서 편하다.

더 야무진 방법은 파크스-맥클렐런(Parks-McClellan) 설계다. 레메즈 교환 알고리즘으로 최대 오차를 최소화(minimax)하는 계수를 찾는데, 결과가 통과·저지대역에서 리플 크기가 모두 같은 등리플(equiripple) 형태로 나온다. 같은 탭 수로 얻을 수 있는 최선의 필터라는 뜻이며, 이론적 근거는 체비셰프 근사의 교대 정리다(직교다항식 참고). 최소제곱 기준으로 설계하는 방식도 있는데, 이쪽은 최소자승법을 주파수 영역에 그대로 적용한 것이다.

4.2. IIR — 아날로그 프로토타입과 쌍선형 변환[편집]

IIR은 100년 묵은 아날로그 필터 이론을 재활용한다. 먼저 아날로그 프로토타입을 고른다.

  • 버터워스: 통과대역이 최대 평탄. 리플이 없는 대신 천이가 느리다.
  • 체비셰프 I형: 통과대역에 리플을 허용하고 천이를 급하게.
  • 체비셰프 II형: 리플을 저지대역으로 몰아준 버전.
  • 타원(카우어): 양쪽에 리플을 허용해 같은 차수에서 가장 급한 천이. 대신 위상이 가장 험하다.

그 다음 s 평면을 z 평면으로 옮기는데, 표준은 쌍선형 변환 s=2T1z11+z1s = \frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}} 이다. 이 사상은 좌반평면 전체를 단위원 내부로 일대일 대응시키므로 안정한 아날로그 필터는 반드시 안정한 디지털 필터가 된다. 공짜는 아니다. 무한한 아날로그 주파수 축을 유한한 [0,π][0, \pi] 안에 우겨넣으므로 축이 휜다 — 주파수 워핑(warping)이며 관계는 ωa=2Ttan(ωd/2)\omega_a = \frac{2}{T}\tan(\omega_d/2) 다. 그래서 설계 전에 목표 차단주파수를 미리 반대로 휘어놓는 프리워핑(prewarping)을 한다. 이걸 빼먹으면 차단주파수가 나이퀴스트 근처에서 눈에 띄게 밀린다.1

5. 위상 왜곡과 영위상 필터링[편집]

IIR을 쓰면 위상이 비선형이라 파형이 왜곡된다. 오프라인 처리라면 반칙 같은 해법이 있다. 영위상 필터링(zero-phase filtering, MATLAB/SciPy의 filtfilt)이다. 신호를 필터에 한 번 통과시키고, 결과를 시간축으로 뒤집어 같은 필터에 한 번 더 통과시킨 뒤 다시 뒤집는다. 시간 반전은 주파수 영역에서 켤레를 취하는 연산이므로 전체 전달함수는

Htot(ejω)=H(ejω)H(ejω)=H(ejω)2H_{\text{tot}}(e^{j\omega}) = H(e^{j\omega})\,H^{*}(e^{j\omega}) = |H(e^{j\omega})|^2

가 되어 위상이 정확히 0, 군지연도 0이 된다. 세상에 공짜는 없어서 대가가 셋이다. (1) 미래 표본을 봐야 하므로 인과성을 포기한다 — 실시간 처리에는 못 쓴다. (2) 크기 응답이 제곱되므로 감쇠가 두 배(dB 기준), 차단 특성이 설계값과 달라진다. (3) 신호 양 끝에서 과도응답이 튀어서 보통 반사 패딩으로 완화한다. 그럼에도 EEG·심전도·진동 계측처럼 “이벤트가 언제 일어났는지”가 생명인 후처리에서는 사실상 표준이다.

6. 구현 — 2차 절과 유한 워드길이[편집]

교과서에 나오는 직접형 II(Direct Form II)는 지연소자를 최소로 쓰는 우아한 구조지만, 고차에서 그대로 쓰면 망한다. 이유는 수치해석의 고전 이슈다. 고차 다항식의 근은 계수에 극도로 민감하다. 10차 필터를 하나의 다항식으로 표현하면, 계수를 32비트로 반올림하는 것만으로 극점이 단위원 밖으로 걸어 나가는 일이 실제로 벌어진다.2

그래서 실무 표준은 2차 절(second-order section, SOS 또는 biquad) 종속 연결이다. 고차 전달함수를 켤레 극·영점 쌍 단위로 쪼개 2차 필터 여러 개를 직렬로 잇는다. 각 절의 계수는 2차 다항식의 근만 결정하므로 감도가 극적으로 낮아지고, 한 절이 흔들려도 다른 절의 극점은 멀쩡하다. SciPy가 ba 대신 sos 출력을 권하는 이유, 오디오 DSP가 죄다 biquad로 짜여 있는 이유가 이것이다. 절의 배치 순서와 각 절 사이의 스케일링도 오버플로 여유(headroom)에 영향을 주므로, 보통 극점이 단위원에 가까운 절을 뒤로 보낸다.

고정소수점 한계 사이클(limit cycle)은 정수 연산 DSP의 고질병이다. 되먹임 경로에서 곱셈 결과를 매번 반올림하면 그 양자화 오차가 다시 루프를 돌기 때문에, 입력이 0인데도 출력이 LSB 몇 개 크기로 영원히 진동하는 상태에 갇힌다. 게다가 2의 보수 오버플로가 부호를 뒤집으면 진폭이 풀스케일까지 튀는 오버플로 진동도 생긴다. 대책은 포화(saturation) 연산 사용, 오차 되먹임(noise shaping), 디더 주입, 그리고 애초에 부동소수점 연산을 쓰는 것이다.3 아날로그 회로 쪽에서 같은 필터를 검증하고 싶다면 SPICE 시뮬레이션과 주파수 응답 해석으로 크로스체크한다.

6.1. 어디까지가 디지털 필터인가[편집]

주파수 축에서 곱하는 모든 연산이 필터인 것은 아니다. 고속 푸리에 변환으로 스펙트럼을 만든 뒤 마스크를 곱하고 역변환하는 방식(overlap-add/overlap-save)은 긴 FIR을 빠르게 돌리는 구현 기법이지 별개의 필터가 아니다. 반면 웨이블릿 변환은 시간-주파수 국소화를 목표로 필터 뱅크를 다중해상도로 쌓는 것이라 목적 자체가 다르고, 칼만 필터는 상태공간 모형에 기반한 추정기라 “필터”라는 이름만 공유할 뿐 전혀 다른 물건이다. 주파수 영역의 기본기는 푸리에 변환 쪽을, 고속 신호선의 부작용은 시그널 인테그리티를 보면 된다.

7. 관련 문서[편집]

8. Footnotes[편집]

  1. 프리워핑은 정확히 한 주파수만 맞춰준다. 통과대역 가장자리를 맞추면 저지대역 가장자리가 어긋나고, 그 반대도 마찬가지. “어느 쪽을 맞출 거냐”는 설계자의 선택이며, 이걸 안 물어보는 필터 설계 툴은 대개 통과대역 가장자리를 맞춘다.

  2. 이 현상의 교과서적 극단 사례가 윌킨슨 다항식이다. 근이 1부터 20까지인 20차 다항식에서 계수 하나를 2232^{-23}만큼 건드리면 근 몇 개가 복소평면으로 날아간다. 필터 계수 양자화도 정확히 같은 병이며, 그래서 “고차 다항식을 만들지 않는다”가 유일하게 통하는 처방이다.

  3. 물론 부동소수점을 쓰면 한계 사이클이 완전히 사라지는 것은 아니다. 다만 진폭이 상대오차 수준으로 내려가 실용상 문제가 안 될 뿐이다. 요즘은 그냥 double로 돌리고 “고정소수점 최적화는 배터리 걱정할 때 하자”가 현업 정서지만, MCU 펌웨어 짜는 사람은 여전히 Q15 포맷과 씨름한다.