La mia "Regola empirica" preferita per l'ordine di un filtro FIR passa-basso è la "regola empirica di Fred Harris":
N=[fs/delta(f)]∗[atten(dB)/22]
dove delta (f) è la banda di transizione, nelle stesse unità di è la frequenza di campionamento dell'attenuazione del filtro (dB) è il rifiuto target in dBfs
fs
Ad esempio, se si dispone di una banda di transizione di 100 Hz in un sistema campionato a 1 KHz e il requisito di rifiuto è di 50 dB nella banda di arresto, è possibile approssimare l'ordine di:
N = 1 KHz / 100 Hz * 50/22 = 23 tocchi (arrotondamento per eccesso)
Grazie Fred Harris!
Nota un'altra formula più dettagliata che tiene conto dell'ondulazione della banda passante è la formula di Kaiser grazie a James Kaiser di Bell Labs, che ho incluso nella mia grafica qui sotto.
Per la maggior parte delle applicazioni che ho fatto, l'approccio di fred harris è andato bene, dato che dato un certo rifiuto, i filtri risultanti che utilizzano algoritmi di progettazione di filtri tradizionali come Parks-McClellan e Remez hanno superato i miei requisiti di ripple passband nel soddisfare i requisiti di rifiuto. (Quello che faccio di solito è stimare l'ordine, progettare il filtro con quell'ordine, ispezionare il risultato e aumentare o diminuire l'ordine da lì per perfezionare). I risultati delle stime sono proprio questi: stime e possono variare ampiamente a seconda dei parametri generali di progettazione e non devono essere considerati una soluzione esatta.
Per coloro che hanno familiarità con il design del filtro usando gli approcci alle finestre, la revisione del boxcar o della finestra rettangolare (che è un semplice troncamento) rivela perché sono necessari i tocchi (che è lo stesso di se le unità per frequenza normalizzata sono radianti / campione come spesso si fa) per completare la banda di transizione. Vedi le immagini qui sotto che aiutano a spiegarlo.fs/Δf2π/Δω
La prima immagine sotto mostra il Sinc atteso in frequenza per una finestra rettangolare nel tempo, e quindi in forma discreta, in cui si tratta di una funzione Sinc aliasata, con il punto chiave che per N campioni nel tempo della funzione rettangolare, la risposta in frequenza ha il suo primo null a f = 1 / N (dove f è la frequenza normalizzata con 1 è la frequenza di campionamento).
L'immagine seguente mostra l'approccio della finestra rettangolare al design del filtro (che non consiglierei mai ma è informativo). Il primo grafico nell'angolo in alto a sinistra mostra la risposta in frequenza target per il nostro filtro come risposta "muro di mattoni" ideale. Per favore, non confonderlo con la "finestra boxcar" (o "finestra rettangolare") che è anche una forma rettangolare - la finestra è nel dominio del tempo!
Al fine di realizzare un tale filtro, utilizzeremmo la risposta all'impulso della risposta in frequenza desiderata come coefficienti nel nostro filtro FIR (i coefficienti del filtro sono la risposta all'impulso --- inseriamo un impulso dentro e fuori per tutti i coefficienti! ). La risposta all'impulso per una risposta in frequenza rettangolare (brickwall) è la FT inversa che è una funzione Sinc, nel dominio del tempo, mostrata nell'angolo in basso a sinistra come "Risposta impulsiva richiesta". Una funzione Sinc si estende a più e meno infinito, quindi per realizzare effettivamente un tale filtro avremmo bisogno di un filtro infinitamente lungo e avrebbe un ritardo infinitamente lungo. Ovviamente non possiamo farlo, quindi tronchiamo i coefficienti a qualcosa di realizzabile. Più lungo è il filtro, più ci avviciniamo alla risposta ideale del brickwall,
Troncare la risposta all'impulso nel dominio del tempo è matematicamente identico alla moltiplicazione di una finestra rettangolare nel dominio del tempo. (Notare che anche la risposta all'impulso è ritardata della metà della durata della finestra affinché il sistema sia causale). Moltiplicare nel dominio del tempo equivale alla convoluzione nel dominio della frequenza. Il dominio della frequenza (FT) della risposta all'impulso prima del troncamento è la nostra risposta di frequenza brickwall desiderata originale. La risposta in frequenza per la finestra rettangolare è una funzione Sinc nel dominio della frequenza.
Quindi quando tronciamo la risposta all'impulso desiderata (moltiplicandola nel tempo per una finestra rettangolare), contiamo la risposta in frequenza desiderata con una funzione Sinc, risultando in un'approssimazione della nostra risposta in frequenza target, come mostrato nell'angolo in alto a destra dell'immagine sotto.
Un tasto da asporto per le funzioni di Sinc in generale è il primo null è 1 / T dove T è la durata della funzione rettangolare. Per un sistema campionato, il primo null sarebbe a dove N rappresenta il numero di campioni per la durata della funzione rettangolare. Nelle immagini viene utilizzata una frequenza radiante normalizzata per l'asse della frequenza (se ciò confonde, basta sapere che è la frequenza radiante per la frequenza di campionamento). Quindi nel processo della convoluzione, la forte transizione del brickwall si diffonde e in questo caso va a 0 (il nostro ) su una frequenza di ! Quindi qui2π/N2πΔω2π/NN=2π/Δω
e ovviamente il filtro è scadente con i sidelobes ecc. Nota: questa transizione dalla funzione Sinc è il più nitido disponibile per un dato numero di tocchi; ha la migliore risoluzione in frequenza ma l'intervallo dinamico più scarso (rifiuto). Altre tipologie di finestre (Blackman, Blackman-harris, Kaiser (il mio preferito), ecc.) Miglioreranno significativamente la gamma dinamica ma sempre a spese della transizione.
Quindi, da quanto sopra, vediamo l'origine del che viene utilizzato nelle formule di approssimazione e vediamo anche perché esiste un ulteriore fattore di moltiplicazione che aumenta il numero di tocchi sopra questo per i tipici progetti di filtro; la finestra rettangolare ci darebbe la migliore transizione possibile con N tocchi dove ma hanno un rifiuto molto scarso. Più tocchi vengono utilizzati per facilitare la transizione temporale oltre la brusca transizione della finestra rettangolare, fornendo un maggiore rifiuto a scapito della larghezza di banda di transizione.2π/ΔωN=2π/Δω