English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

gast
1 / ?
terug naar lessen

Van Ideale Respons naar Praktisch Filter

Hamming presenteerde een vierstaps-ontwerpmethode voor FIR-filters met behulp van Fourier-reeksen.

Stap 1: Definieer de Ideale Respons

Definieer H_ideal(f): de exacte frequentierespons die je wilt. Voor een laagdoorlaatfilter: H = 1 voor f < f_c, H = 0 voor f > f_c. Dit is een stapfunctie in het frequentiedomein.

Stap 2: Bereken Fourier-coëfficiënten

Breid H_ideal(f) uit als een Fourier-reeks in de frequentievariabele. De coëfficiënten c_k zijn de ideale impulsresponswaardes van het filter:

c_k = ∫₀¹ H_ideal(f) · e^{i2πfk} df

Voor een laagdoorlaatfilter met afsnijding f_c: c_k = sin(2πf_c·k) / (πk) voor k ≠ 0, c_0 = 2f_c.

Deze impulsrespons is oneindig — de sinc-functie strekt zich eeuwig uit in de tijd. Een praktisch filter heeft een eindig aantal coëfficiënten nodig.

Stap 3: Trunceer naar 2N+1 Termen

Behoud alleen coëfficiënten c_k voor |k| ≤ N. Dit rechthoekig venster van 2N+1 termen is de eenvoudigste truncatie. Het produceert het Gibbs-fenomeen: ≈9% overshoot bij de afsnijding.

Stap 4: Pas een Venster Toe

Vermenigvuldig de afgeknotte coëfficiënten met een vensterfunctie w_k om Gibbs-overshoot te verminderen:

c̃_k = c_k · w_k

De vensterde coëfficiënten c̃_k definiëren het praktische filter.

Gibbs-fenomeen & Vensterfuncties

Fourier-coëfficiënten Berekenen

De Fourier-coëfficientformule c_k = sin(2πf_c·k) / (πk) voor een laagdoorlaatfilter met afsnijding f_c geeft de impulsrespons.

Voor een banddoorlaatfilter met lagere afsnijding f_l en hogere afsnijding f_u, is de Fourier-coëfficiënt van de ideale respons: c_k = [sin(2πf_u·k) − sin(2πf_l·k)] / (πk).

Voor een laagdoorlaatfilter met afsnijding f_c = 1/4, bereken de Fourier-coëfficiënten c_k voor k = 0, 1, 2, en −1. Gebruik c_0 = 2f_c en c_k = sin(2πf_c·k)/(πk) voor k ≠ 0. Toon de berekening voor elk getal. Leg vervolgens uit waarom de coëfficientreeks symmetrisch is: c_k = c_{−k}.

Hoe Vensters Gibbs-Overshoot Verminderen

Een vensterfunctie w_k verzwakt de afgeknotte coëfficientreeks van zijn centrale waarde naar nul aan de randen. De verzwakking verwijdert de scherpe randen die door rechthoekige truncatie worden veroorzaakt.

Waarom Verzwakking Werkt

Gibbs-overshoot ontstaat omdat de Fourier-transformatie van het rechthoekige venster (de sinc-functie) grote zijlobben heeft. Deze zijlobben tellen samen bij de discontinuïteit op om de ≈9% overshoot te produceren.

Een glad venster heeft een Fourier-transformatie met kleinere zijlobben. Vermenigvuldiging van de coëfficiënten met het venster voert convolutie uit van de ideale frequentierespons met de Fourier-transformatie van het venster. Kleinere zijlobben → minder rimpel.

Veelvoorkomende Vensters

Rechthoekig (geen venster): zijlobben ≈ −13 dB, Gibbs ≈ 9%.

Hann (van Hann): w_k = 0.5 + 0.5·cos(πk/N). Zijlobben ≈ −31 dB.

Hamming: w_k = 0.54 + 0.46·cos(πk/N). Zijlobben ≈ −41 dB, eerste zijlob ≈ −43 dB. Gibbs < 0.2%.

Kaiser: w_k = I₀(α·√(1−(k/N)²)) / I₀(α). Instelbaar: α bepaalt het zijlobniveau, waardoor een ontwerp de zijlobhoogte tegen overgangsbandbreedte kan verhandelen.

De Vensterafweging

Elk venster legt een afweging op: het onderdrukken van zijlobben verbreed altijd de hoofdlob.

Een bredere hoofdlob betekent een bredere overgangsband — het bereik van frequenties tussen doorlaatband & stopband.

Hamming formaliseerde dit in termen van Kaisers ontwerpparameters:

- δ: toegelaten rimpel (verticale tolerantie van ideaal — hoeveel de respons kan afwijken van 0 of 1)

- ΔF: overgangsbandbreedte (horizontale tolerantie — hoe smal de overgang van doorlaat naar stop)

Kaisers methode vindt zowel N (aantal coëfficiënten) als α (de venstervormparameter) uit δ en ΔF alleen. Geen gissen naar venstertype.

Een filterspecificatie vereist: doorlaatbandrimpel ≤ 0.01 (δ = 0.01) en overgangsbandbreedte ΔF = 0.05 (genormaliseerd). Een tweede filter vereist: doorlaatbandrimpel ≤ 0.001 (δ = 0.001) en dezelfde ΔF = 0.05. Welk filter vereist meer coëfficiënten N? Leg de relatie uit tussen rimpltolerante δ en filterorde N in Fourier-reeks-ontwerp.

Van Specificaties naar Coëfficiënten

Kaisers methode neemt twee specificaties — δ (rimpltolerante) en ΔF (overgangsbandbreedte) — en produceert zowel N als de vensterfunctiewaarden zonder trial-and-error.

De Ontwerpvolgorde

1. Bereken A = −20·log₁₀(δ) (demping in dB)

2. Bereken de vormparameter α:

- Als A > 50: α = 0.1102·(A − 8.7)

- Als 21 ≤ A ≤ 50: α = 0.5842·(A − 21)^{0.4} + 0.07886·(A − 21)

- Als A < 21: α = 0 (rechthoekig venster)

3. Bereken N = (A − 8) / (2.285 · 2πΔF)

4. Bereken de Kaiser-vensterwichten: w_k = I₀(α·√(1−(k/N)²)) / I₀(α)

5. Vermenigvuldig de ideale Fourier-coëfficiënten met de vensterwichten

6. Evalueer de resulterende transferfunctie en controleer rimpel tegen δ. Als rimpel δ overschrijdt (randinterferentie), herhaal met een kleinere tolerantie.

Hamming opmerkte: Kaiser kwam op de exponent 0.4 door 0.5 te proberen (te groot) en bevond dat 0.4 goed past. De computer diende als experimenteel gereedschap voor theoretisch onderzoek.

Kaisers Methode Toepassen

De Bessel-functie I₀(x) verschijnt in Kaisers vensterfunctie. Het berekent als een snel convergerende reeks:

I₀(x) = Σ_{m=0}^∞ [(x/2)^m / m!]²

Voor kleine x convergeert de reeks in enkele termen vanwege de m!² in de noemer.

Een laagdoorlaatfilter vereist δ = 0.01 (1% rimpel) en ΔF = 0.1 (10% van de bemonsteringsfrequentie als overgangsbandbreedte). Met Kaisers formule: A = −20·log₁₀(0.01) = 40 dB. Omdat 21 ≤ 40 ≤ 50, gebruik je α = 0.5842·(A−21)^{0.4} + 0.07886·(A−21). Bereken α. Gebruik dan N = (A−8)/(2.285·2πΔF) om het vereiste aantal filtercoëfficiënten te berekenen. Rond N af naar het dichtstbijzijnde gehele getal.