이상적인 응답에서 실용적인 필터로
해밍(Hamming)이 푸리에 급수를 사용하여 FIR 필터의 4단계 설계 방법을 제시했습니다.
단계 1: 이상적인 응답 지정
H_ideal(f) 정의: 원하는 정확한 주파수 응답입니다. 저역통과 필터의 경우: f < f_c일 때 H = 1, f > f_c일 때 H = 0. 이것은 주파수 영역의 계단 함수입니다.
단계 2: 푸리에 계수 계산
H_ideal(f)를 주파수 변수의 푸리에 급수로 전개합니다. 계수 c_k는 필터의 이상적인 임펄스 응답 값입니다:
c_k = ∫₀¹ H_ideal(f) · e^{i2πfk} df
차단 f_c를 가진 저역통과 필터의 경우: k ≠ 0일 때 c_k = sin(2πf_c·k) / (πk), c_0 = 2f_c.
이 임펄스 응답은 무한입니다 — sinc 함수는 시간상 영원히 확장됩니다. 실용적인 필터는 유한한 수의 계수가 필요합니다.
단계 3: 2N+1 항으로 절단
|k| ≤ N에 대해 계수 c_k만 유지합니다. 2N+1 항의 이 직사각형 윈도우는 가장 간단한 절단입니다. 이는 깁스 현상을 생성합니다: 차단점 근처에서 약 9% 오버슈트.
단계 4: 윈도우 적용
깁스 오버슈트를 줄이기 위해 절단된 계수에 윈도우 함수 w_k를 곱합니다:
c̃_k = c_k · w_k
윈도우 처리된 계수 c̃_k는 실용적인 필터를 정의합니다.
푸리에 계수 계산
차단 f_c를 가진 저역통과 필터에 대한 푸리에 계수 공식 c_k = sin(2πf_c·k) / (πk)는 임펄스 응답을 제공합니다.
하한 차단 f_l 및 상한 차단 f_u를 가진 대역통과 필터의 경우, 이상적인 응답에 대한 푸리에 계수는: c_k = [sin(2πf_u·k) − sin(2πf_l·k)] / (πk).
윈도우가 깁스 오버슈트를 줄이는 방법
윈도우 함수 w_k는 절단된 계수 수열을 중앙값에서 가장자리에서 0으로 테이퍼합니다. 테이퍼는 직사각형 절단으로 인한 급한 모서리를 제거합니다.
테이퍼링이 작동하는 이유
깁스 오버슈트는 직사각형 윈도우의 푸리에 변환(sinc 함수)이 큰 사이드로브를 가지기 때문에 발생합니다. 이러한 사이드로브는 불연속점 근처에서 함께 추가되어 약 9% 오버슈트를 생성합니다.
부드러운 윈도우는 더 작은 사이드로브를 가진 푸리에 변환을 가집니다. 계수에 윈도우를 곱하면 이상적인 주파수 응답을 윈도우의 푸리에 변환과 합성합니다. 더 작은 사이드로브 → 더 적은 리플.
일반적인 윈도우
직사각형 (윈도우 없음): 사이드로브 ≈ −13 dB, 깁스 ≈ 9%.
한(Hann) (von Hann): w_k = 0.5 + 0.5·cos(πk/N). 사이드로브 ≈ −31 dB.
해밍(Hamming): w_k = 0.54 + 0.46·cos(πk/N). 사이드로브 ≈ −41 dB, 첫 번째 사이드로브 ≈ −43 dB. 깁스 < 0.2%.
카이저(Kaiser): w_k = I₀(α·√(1−(k/N)²)) / I₀(α). 조정 가능: α는 사이드로브 수준을 제어하여 설계가 사이드로브 높이 대 전이 대역 폭을 절충할 수 있습니다.
윈도우 트레이드-오프
모든 윈도우는 트레이드-오프를 부과합니다: 사이드로브를 억제하면 항상 주로브를 넓힙니다.
더 넓은 주로브는 더 넓은 전이 대역을 의미합니다 — 통과대역과 차단대역 사이의 주파수 범위입니다.
해밍은 카이저의 설계 매개변수로 이를 공식화했습니다:
- δ: 허용 가능한 리플 (이상적 값으로부터의 수직 공차 — 응답이 0 또는 1에서 얼마나 벗어날 수 있는지)
- ΔF: 전이 폭 (수평 공차 — 통과에서 차단으로의 전이가 얼마나 좁은지)
카이저 방법은 δ와 ΔF만으로 N (계수의 수)과 α (윈도우 형태 매개변수) 모두를 찾습니다. 윈도우 유형을 추측할 필요가 없습니다.
사양에서 계수로
카이저 방법은 두 개의 사양 — δ (리플 공차) 및 ΔF (전이 폭) — 을 취하고 시행착오 없이 N과 윈도우 계수를 모두 생성합니다.
설계 순서
1. A = −20·log₁₀(δ) (dB의 감쇠)를 계산합니다
2. 형태 매개변수 α를 계산합니다:
- A > 50인 경우: α = 0.1102·(A − 8.7)
- 21 ≤ A ≤ 50인 경우: α = 0.5842·(A − 21)^{0.4} + 0.07886·(A − 21)
- A < 21인 경우: α = 0 (직사각형 윈도우)
3. N = (A − 8) / (2.285 · 2πΔF)를 계산합니다
4. 카이저 윈도우 가중치를 계산합니다: w_k = I₀(α·√(1−(k/N)²)) / I₀(α)
5. 이상적인 푸리에 계수에 윈도우 가중치를 곱합니다
6. 결과 전달 함수를 평가하고 리플을 δ에 대해 확인합니다. 리플이 δ를 초과하면 (가장자리 간섭), 더 작은 공차로 반복합니다.
해밍은 다음과 같이 지적했습니다: 카이저는 0.5 (너무 큼)를 시도하고 0.4가 잘 맞는 것을 발견하여 지수 0.4에 도달했습니다. 컴퓨터는 이론적 연구의 실험적 도구로 사용되었습니다.
카이저 방법 적용
베셀 함수 I₀(x)는 카이저의 윈도우 공식에 나타납니다. 이는 빠르게 수렴하는 급수로 계산됩니다:
I₀(x) = Σ_{m=0}^∞ [(x/2)^m / m!]²
작은 x의 경우, 분모의 m!² 때문에 급수는 몇 항 내에 수렴합니다.