İdeal Yanıttan Pratik Filtreye
Hamming, FIR filtreler için Fourier serisini kullanan dört adımlı bir tasarım yöntemi sundu.
Adım 1: İdeal Yanıtı Belirleyin
H_ideal(f) tanımlayın: istediğiniz kesin frekans yanıtı. Alçak geçişli filtre için: f < f_c için H = 1, f > f_c için H = 0. Bu frekans alanında bir basamak işlevidir.
Adım 2: Fourier Katsayılarını Hesaplayın
H_ideal(f) öğesini frekans değişkeninde Fourier serisi olarak genişletin. Katsayılar c_k, filtrenin ideal impuls yanıtı değerleridir:
c_k = ∫₀¹ H_ideal(f) · e^{i2πfk} df
f_c kesme sıklığına sahip alçak geçişli filtre için: k ≠ 0 için c_k = sin(2πf_c·k) / (πk), c_0 = 2f_c.
Bu impuls yanıtı sonsuzdur — sinc işlevi zamanda sonsuza kadar uzanır. Pratik bir filtre sonlu sayıda katsayı gerektirir.
Adım 3: 2N+1 Terime Kesin
|k| ≤ N için sadece c_k katsayılarını tutun. 2N+1 terimin bu dikdörtgen penceresi en basit kesintedir. Gibbs fenomenini üretir: kesme noktasında ≈%9 aşırı konum.
Adım 4: Pencereyi Uygulayın
Kesilen katsayıları Gibbs aşırı konumunu azaltmak için pencere işlevi w_k ile çarpın:
c̃_k = c_k · w_k
Pencereli c̃_k katsayıları pratik filtreyi tanımlar.
Fourier Katsayılarını Hesaplama
Alçak geçişli filtre için Fourier katsayısı formülü c_k = sin(2πf_c·k) / (πk) f_c kesme sıklığı ile impuls yanıtını verir.
F_l alt kesme sıklığı ve f_u üst kesme sıklığına sahip bir bant geçişli filtre için, ideal yanıt için Fourier katsayısı: c_k = [sin(2πf_u·k) − sin(2πf_l·k)] / (πk).
Pencereler Gibbs Aşırı Konumunu Nasıl Azaltır?
Pencere işlevi w_k, kesilen katsayı dizisini merkezi değerinden kenarlarında sıfıra kadar inceltir. İncelme, dikdörtgen kesinti tarafından tanıtılan keskin kenarları kaldırır.
Neden İncelme İşe Yarar?
Gibbs aşırı konumu, dikdörtgen pencerenin Fourier dönüşümünün (sinc işlevi) büyük yan lobları olduğu için ortaya çıkar. Bu yan loblar süreksizliğin yakınında birlikte toplanarak ≈%9 aşırı konumu üretir.
Pürüzsüz bir pencere daha küçük yan lobları olan bir Fourier dönüşümüne sahiptir. Katsayıları pencere ile çarpmak, ideal frekans yanıtını pencerenin Fourier dönüşümü ile katlıştırır. Daha küçük yan loblar → daha az dalgalanma.
Yaygın Pencereler
Dikdörtgen (pencere yok): yan loblar ≈ −13 dB, Gibbs ≈ %9.
Hann (von Hann): w_k = 0.5 + 0.5·cos(πk/N). Yan loblar ≈ −31 dB.
Hamming: w_k = 0.54 + 0.46·cos(πk/N). Yan loblar ≈ −41 dB, ilk yan lob ≈ −43 dB. Gibbs < %0,2.
Kaiser: w_k = I₀(α·√(1−(k/N)²)) / I₀(α). Ayarlanabilir: α yan lob seviyesini kontrol eder, bir tasarımın yan lob yüksekliği ile geçiş bandı genişliği arasında işlem yapmaya izin verir.
Pencere Dengesi
Her pencere bir dengeyi getirir: yan lobları bastırmak her zaman ana lobu genişletir.
Daha geniş bir ana lob, daha geniş bir geçiş bölgesi anlamına gelir — geçiş bandı ve kesme bandı arasındaki frekans aralığı.
Hamming bunu Kaiser'in tasarım parametreleri açısından resmileştirdi:
- δ: izin verilebilir dalgalanma (ideal'den dikey tolerans — yanıt 0 veya 1'den ne kadar sapabilir)
- ΔF: geçiş genişliği (yatay tolerans — geçiş bölgesi ne kadar dar)
Kaiser'in yöntemi δ ve ΔF tek başına hem N (katsayı sayısı) hem de α (pencere şekli parametresi) bulur. Pencere türünü tahmin etmeye gerek yok.
Belirtimlerden Katsayılara
Kaiser'in yöntemi iki belirtim — δ (dalgalanma toleransı) ve ΔF (geçiş genişliği) — alır ve deneme yanılma olmadan hem N hem de pencere katsayılarını üretir.
Tasarım Sırası
1. A = −20·log₁₀(δ) (dB cinsinde sönümleme) hesaplayın
2. Şekil parametresi α hesaplayın:
- A > 50 ise: α = 0.1102·(A − 8.7)
- 21 ≤ A ≤ 50 ise: α = 0.5842·(A − 21)^{0.4} + 0.07886·(A − 21)
- A < 21 ise: α = 0 (dikdörtgen pencere)
3. N = (A − 8) / (2.285 · 2πΔF) hesaplayın
4. Kaiser penceresi ağırlıklarını hesaplayın: w_k = I₀(α·√(1−(k/N)²)) / I₀(α)
5. İdeal Fourier katsayılarını pencere ağırlıklarıyla çarpın
6. Elde edilen transfer işlevini değerlendirin ve dalgalanmayı δ'ye karşı kontrol edin. Eğer dalgalanma δ'yi aşarsa (kenar girişimi), daha küçük tolerans ile tekrarlayın.
Hamming kaydetti: Kaiser, 0.5'i denerek (çok büyük) üsse ulaştı ve 0.4'ün iyi uyduğunu buldu. Bilgisayar, teorik araştırma için deneysel bir araç olarak hizmet etti.
Kaiser'in Yöntemini Uygulamak
Bessel işlevi I₀(x) Kaiser'in pencere formülünde görünür. Hızla yakınsayan bir seri olarak hesaplanır:
I₀(x) = Σ_{m=0}^∞ [(x/2)^m / m!]²
Küçük x için, m!² paydasında olduğu için seri birkaç terimde yakınsar.