Principi di base per la progettazione di filtri digitali (IIR / FIR)


15

Anche se ho una solida esperienza nella progettazione di motori audio e simili, sono abbastanza nuovo nel regno della progettazione di filtri digitali, in particolare i filtri IIR e FIR. In altre parole, sto cercando di imparare il più possibile su come progettare i filtri e ricavarne le equazioni di differenza. Sto partendo dalle basi, quindi per favore abbi pazienza, come ho detto, sto cercando di imparare.

Ecco la mia domanda:

Supponiamo che io voglia progettare un filtro passa-basso con un particolare taglio - diciamo 300 Hz. Quale sarebbe il modo migliore per derivare matematicamente la funzione di trasferimento e quindi derivare la particolare equazione di differenza per implementare il filtro in Direct Form I e Direct Form II (o solo DF-1 per ora ...)?

Ho una certa comprensione delle funzioni di trasferimento e di come si relazionano con le equazioni alle differenze rispetto a un materiale eccellente sul web, sfortunatamente alcune di esse presuppongono una buona conoscenza precedente, quindi è più confusa che utile nella mia ricerca. Quindi immagino di aver bisogno di un esempio più dettagliato che mi aiuti a collegare i punti.

Quindi sto sostanzialmente cercando aiuto per una suddivisione del processo a partire dalla scelta della frequenza di taglio fino a derivare l'equazione della differenza.

Qualsiasi aiuto sarà molto apprezzato. Conosco molti concetti: risposta all'impulso, DFT, matematica alla base, immagino che ciò di cui ho bisogno di più aiuto sia il concetto di trasformata z e il polo / zero usato per progettare la funzione di trasferimento del filtro e poi come funziona la frequenza di taglio. gioca in tutto questo per derivare finalmente l'equazione della differenza.

Dato che tendo ad imparare meglio dall'esempio, ho pensato di chiedere qui. Grazie mille a chiunque abbia trovato il tempo di aiutarmi.


2
Esistono molti metodi di progettazione del filtro. Ecco alcuni termini per iniziare: il metodo di progettazione della finestra, la progettazione del filtro dei minimi quadrati e la progettazione del filtro dell'equiripple (di solito usando l'algoritmo Parks-McClellan). Questi sono principalmente limitati ai progetti di filtri FIR. Un modo comune di progettare filtri IIR è mappare un prototipo analogico (come un filtro Butterworth) su una corrispondente approssimazione del filtro digitale. Questo potrebbe essere fatto usando la trasformazione bilineare o i metodi di invarianza dell'impulso, per esempio.
Jason R,

Risposte:


20

Il design del filtro digitale è un argomento molto ampio e maturo e - come hai già detto nella tua domanda - c'è molto materiale disponibile. Quello che voglio provare qui è iniziare e rendere più accessibile il materiale esistente. Invece di filtri digitali dovrei effettivamente parlare di filtri a tempo discreto perché non considererò la quantizzazione dei coefficienti e dei segnali qui. Conosci già i filtri FIR e IIR e conosci anche alcune strutture di filtro come DF I e II. Tuttavia, vorrei iniziare con alcune nozioni di base:

Un filtro invariante temporale non ricorsivo lineare (LTI) può essere descritto dalla seguente equazione di differenza

(1)y(n)=h0X(n)+h1X(n-1)+...+hN-1X(n-N+1)=ΣK=0N-1hKX(n-K)

dove è la sequenza di output, è la sequenza di input, è l'indice di tempo, sono i coefficienti di filtro e è la lunghezza del filtro (il numero di tocchi). Le filtro sono anche la risposta all'impulso del filtro perché se il segnale di ingresso è un impulso, cioè , allorax ( n ) n h k N h k x ( n ) = δ ( n ) y ( n ) = h n h ky(n)X(n)nhKNhKX(n)=δ(n)y(n)=hn(se la memoria del filtro è stata inizializzata con zeri). L'equazione (1) descrive un sistema lineare invariante nel tempo di risposta agli impulsi (FIR). La somma sul lato destro di (1) è una somma di convoluzione, ovvero il segnale di uscita viene ottenuto contorcendo il segnale di ingresso con la risposta all'impulso. Questo è sempre vero, ma per i filtri IIR non possiamo calcolare esplicitamente la somma della convoluzione perché la risposta all'impulso è infinitamente lunga, cioè ci sono infiniti coefficientihK. Un importante vantaggio dei filtri FIR è che sono sempre stabili, vale a dire per una sequenza di input limitata, la sequenza di output è sempre limitata. Un altro vantaggio è che i filtri FIR possono sempre essere realizzati con una fase esattamente lineare, cioè non aggiungeranno alcuna distorsione di fase se non un ritardo puro. Inoltre, il problema di progettazione è in genere più semplice, come vedremo più avanti.

Un filtro LTI ricorsivo è descritto dalla seguente equazione di differenza:

(2)y(n)=B0X(n)+B1X(n-1)+...+BMX(n-M)--un'1y(n-1)-...-un'Ny(n-N)

L'equazione (2) mostra che l'uscita non è composta solo da campioni di input ponderati e ritardati, ma anche da campioni di output passati ponderati. In generale, la risposta all'impulso di un tale sistema è infinitamente lunga, ovvero il sistema corrispondente è un sistema IIR. Tuttavia, ci sono casi speciali di filtri ricorsivi con una risposta agli impulsi finita. Si noti che la risposta all'impulso non è più data dai coefficienti o come nel caso dei filtri FIR. Un vantaggio dei filtri IIR è che i filtri ripidi con un'attenuazione della banda di arresto elevata possono essere realizzati con coefficienti (e ritardi) molto inferiori rispetto al caso FIR, vale a dire che sono computazionalmente più efficienti. Tuttavia, bisogna fare attenzione con la scelta dei coefficientia k a kBKun'Kun'K perché il filtro IIR può essere instabile, cioè la loro sequenza di uscita può essere illimitata, anche con una sequenza di ingresso limitata.

I filtri possono essere progettati in base alle specifiche nel dominio del tempo (campione) o nel dominio della frequenza o entrambi. Dato che hai menzionato una frequenza di taglio nella tua domanda, presumo che tu sia più interessato alle specifiche nel dominio della frequenza. In questo caso è necessario dare un'occhiata alle risposte in frequenza dei sistemi FIR e IIR. La risposta in frequenza di un sistema è la trasformata di Fourier della sua risposta all'impulso, supponendo che esista (come nel caso dei sistemi stabili). La risposta in frequenza di un filtro FIR è

(3)H(ejθ)=ΣK=0N-1hKe-jKθ

dove è la variabile di frequenza a tempo discreto:θ

θ=2πffS

con la frequenza effettiva e la frequenza di campionamento . Da (3) si può vedere che approssimare una risposta in frequenza desiderata da un sistema FIR è fondamentalmente un problema di approssimazione polinomiale. Per i sistemi ricorsivi che abbiamof sffS

(4)H(ejθ)=ΣK=0MBKe-jθ1+ΣK=1Nun'Ke-jθ

e si ottiene un problema di approssimazione razionale, che di solito è molto più difficile del problema di approssimazione polinomiale nel caso dei filtri FIR. Da (3) e (4) si può vedere che la risposta in frequenza di un filtro FIR è naturalmente solo un caso particolare della risposta di un filtro ricorsivo a coefficienti , .k = 1 , , Nun'K=0K=1,...,N

Diamo ora un'occhiata ai metodi di progettazione del filtro. Per i filtri FIR puoi prendere una trasformata inversa di Fourier della risposta in frequenza desiderata per ottenere la risposta all'impulso del filtro, che corrisponde direttamente ai coefficienti del filtro. Poiché approssimate la risposta desiderata con una risposta all'impulso a lunghezza finita, dovreste applicare una finestra uniforme alla risposta all'impulso ottenuta per minimizzare le oscillazioni nella risposta in frequenza effettiva dovuta al fenomeno di Gibbs. Questo metodo è chiamato metodo di campionamento di frequenza.

Per filtri standard semplici come filtri passa basso, passa alto, passa banda o passa banda ideali (e pochi altri), potresti persino calcolare analiticamente l'esatta risposta all'impulso prendendo la trasformata inversa di Fourier della risposta ideale desiderata:

hK=12π-ππH(ejθ)ejKθdθ

Questo integrale è facile da valutare per le risposte desiderate costanti a tratti, come nel caso dei filtri ideali selettivi in ​​frequenza. Questo ti darà una risposta all'impulso infinitamente lunga e non causale, che deve essere finita e spostata per renderla finita e causale. Questo metodo è noto come design di finestre.

Esistono ovviamente molti altri metodi di progettazione del filtro FIR. Un importante metodo numerico è il famoso algoritmo di scambio Parks-McClellan che progetta filtri ottimali con passabanda costante e increspature di banda di arresto. È un metodo di approssimazione numerica e ci sono molte implementazioni software disponibili, ad esempio in Matlab e Octave.

Il metodo di progettazione IIR più comune per i filtri selettivi in ​​frequenza è il metodo di trasformazione bilineare. Questo metodo utilizza semplicemente formule analitiche per la progettazione di filtri analogici ottimali (come i filtri Butterworth, Chebyshev, Cauer / ellittici e Bessel) e li trasforma nel dominio del tempo discreto applicando una trasformazione bilineare alla variabile complessa (analogica dominio) che mappa l'asse di frequenza (immaginario) del piano complesso al cerchio unitario nel piano complesso (dominio tempo discreto). Non preoccuparti se non sai ancora molto sulle complesse funzioni di trasferimento nel dominio analogico o del tempo discreto perché ci sono buone implementazioni disponibili del metodo di trasformazione bilineare, ad esempio in Matlab o Octave.s zSSz

Esistono ovviamente molti metodi più interessanti e utili, a seconda del tipo di specifiche che hai, ma spero che questo ti inizi e renda più comprensibile qualsiasi materiale che trovi. Un ottimo libro (e gratuito) che illustra alcuni metodi di base per la progettazione di filtri (e molto altro) è Intoduction to Signal Processing di Orfanidis. Qui puoi trovare diversi esempi di design. Un altro grande libro classico è Digital Filter Design di Parks e Burrus.


Caspita, Matt, grazie mille per la risposta dettagliata e ponderata. Ci approfondirò sicuramente e apprezzerò davvero il tuo tempo. Grazie!
Bitwise,

Esiste un buon libro di testo per la progettazione di filtri wavelet? Sono curioso di questo argomento: dsp.stackexchange.com/questions/29090/… . Grazie!
Fattorizzazione LC

Un'ottima introduzione e motiva a fare qualcosa nel campo dell'elaborazione del segnale
jomegaA
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.