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

un

ospite
1 / ?
torna alle lezioni

Dalla Risposta Ideale al Filtro Pratico

Hamming ha presentato un metodo di progettazione a quattro fasi per i filtri FIR utilizzando la serie di Fourier.

Fase 1: Specificare la Risposta Ideale

Definire H_ideal(f): la risposta in frequenza esatta che desideri. Per un filtro passa-basso: H = 1 per f < f_c, H = 0 per f > f_c. Questa è una funzione a gradino nel dominio della frequenza.

Fase 2: Calcolare i Coefficienti di Fourier

Espandere H_ideal(f) come una serie di Fourier nella variabile di frequenza. I coefficienti c_k sono i valori della risposta impulsiva ideale del filtro:

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

Per un filtro passa-basso con frequenza di taglio f_c: c_k = sin(2πf_c·k) / (πk) per k ≠ 0, c_0 = 2f_c.

Questa risposta impulsiva è infinita — la funzione sinc si estende all'infinito nel tempo. Un filtro pratico ha bisogno di un numero finito di coefficienti.

Fase 3: Troncare a 2N+1 Termini

Mantenere solo i coefficienti c_k per |k| ≤ N. Questa finestra rettangolare di 2N+1 termini è la troncatura più semplice. Produce il fenomeno di Gibbs: ≈9% di overshoot vicino al taglio.

Fase 4: Applicare una Finestra

Moltiplicare i coefficienti troncati per una funzione finestra w_k per ridurre l'overshoot di Gibbs:

c̃_k = c_k · w_k

I coefficienti finestrrati c̃_k definiscono il filtro pratico.

Fenomeno di Gibbs & Funzioni Finestra

Calcolo dei Coefficienti di Fourier

La formula del coefficiente di Fourier c_k = sin(2πf_c·k) / (πk) per un filtro passa-basso con frequenza di taglio f_c dà la risposta impulsiva.

Per un filtro passa-banda con frequenza di taglio inferiore f_l e frequenza di taglio superiore f_u, il coefficiente di Fourier per la risposta ideale è: c_k = [sin(2πf_u·k) − sin(2πf_l·k)] / (πk).

Per un filtro passa-basso con frequenza di taglio f_c = 1/4, calcolare i coefficienti di Fourier c_k per k = 0, 1, 2, e −1. Utilizzare c_0 = 2f_c e c_k = sin(2πf_c·k)/(πk) per k ≠ 0. Mostrare il calcolo per ciascuno. Quindi spiegare perché la sequenza di coefficienti è simmetrica: c_k = c_{−k}.

Come le Finestre Riducono l'Overshoot di Gibbs

Una funzione finestra w_k assottiglia la sequenza di coefficienti troncati dal suo valore centrale verso zero ai bordi. L'assottigliamento rimuove i bordi netti introdotti dalla troncatura rettangolare.

Perché l'Assottigliamento Funziona

L'overshoot di Gibbs nasce perché la trasformata di Fourier della finestra rettangolare (la funzione sinc) ha grandi lobi laterali. Questi lobi laterali si sommano insieme vicino alla discontinuità per produrre l'overshoot di ≈9%.

Una finestra liscia ha una trasformata di Fourier con lobi laterali più piccoli. Moltiplicare i coefficienti per la finestra convolve la risposta in frequenza ideale con la trasformata di Fourier della finestra. Lobi laterali più piccoli → meno ripple.

Finestre Comuni

Rettangolare (nessuna finestra): lobi laterali ≈ −13 dB, Gibbs ≈ 9%.

Hann (von Hann): w_k = 0.5 + 0.5·cos(πk/N). Lobi laterali ≈ −31 dB.

Hamming: w_k = 0.54 + 0.46·cos(πk/N). Lobi laterali ≈ −41 dB, primo lobo laterale ≈ −43 dB. Gibbs < 0.2%.

Kaiser: w_k = I₀(α·√(1−(k/N)²)) / I₀(α). Sintonizzabile: α controlla il livello del lobo laterale, permettendo a una progettazione di scambiare l'altezza del lobo laterale con la larghezza della banda di transizione.

Lo Scambio della Finestra

Ogni finestra impone uno scambio: sopprimere i lobi laterali allarga sempre il lobo principale.

Un lobo principale più ampio significa una banda di transizione più ampia — l'intervallo di frequenze tra la banda passante & la banda di arresto.

Hamming ha formalizzato questo in termini dei parametri di progettazione di Kaiser:

- δ: ripple consentito (tolleranza verticale dall'ideale — quanto la risposta può deviare da 0 o 1)

- ΔF: larghezza di transizione (tolleranza orizzontale — quanto stretta la transizione da passa a arresto)

Il metodo di Kaiser trova sia N (numero di coefficienti) che α (il parametro della forma della finestra) da δ e ΔF soli. Nessuna indovinare il tipo di finestra.

Un filtro specifica richiede: ripple della banda passante ≤ 0.01 (δ = 0.01) e larghezza della banda di transizione ΔF = 0.05 (normalizzata). Un secondo filtro richiede: ripple della banda passante ≤ 0.001 (δ = 0.001) e la stessa ΔF = 0.05. Quale filtro richiede più coefficienti N? Spiegare la relazione tra la tolleranza di ripple δ e l'ordine del filtro N nella progettazione della serie di Fourier.

Dalle Specifiche ai Coefficienti

Il metodo di Kaiser prende due specifiche — δ (tolleranza di ripple) e ΔF (larghezza di transizione) — e produce sia N che i coefficienti della finestra senza prove ed errori.

La Sequenza di Progettazione

1. Calcolare A = −20·log₁₀(δ) (attenuazione in dB)

2. Calcolare il parametro di forma α:

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

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

- Se A < 21: α = 0 (finestra rettangolare)

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

4. Calcolare i pesi della finestra di Kaiser: w_k = I₀(α·√(1−(k/N)²)) / I₀(α)

5. Moltiplicare i coefficienti ideali di Fourier per i pesi della finestra

6. Valutare la funzione di trasferimento risultante e controllare il ripple rispetto a δ. Se il ripple supera δ (interferenza del bordo), ripetere con una tolleranza più piccola.

Hamming ha notato: Kaiser è arrivato all'esponente 0.4 provando 0.5 (troppo grande) e trovando che 0.4 si adattava bene. Il computer ha servito come strumento sperimentale per la ricerca teorica.

Applicazione del Metodo di Kaiser

La funzione di Bessel I₀(x) appare nella formula della finestra di Kaiser. Si calcola come una serie che converge rapidamente:

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

Per piccoli x la serie converge in pochi termini a causa di m!² nel denominatore.

Un filtro passa-basso richiede δ = 0.01 (ripple dell'1%) e ΔF = 0.1 (10% della frequenza di campionamento come larghezza di transizione). Utilizzando la formula di Kaiser: A = −20·log₁₀(0.01) = 40 dB. Poiché 21 ≤ 40 ≤ 50, utilizzare α = 0.5842·(A−21)^{0.4} + 0.07886·(A−21). Calcolare α. Quindi utilizzare N = (A−8)/(2.285·2πΔF) per calcolare il numero richiesto di coefficienti del filtro. Arrotondare N al numero intero più vicino.