Di quanti tocchi ha bisogno un filtro FIR?


20

Sto cercando di progettare un set di filtri FIR per implementare un filtro passa basso. Sto anche cercando di ridurre la latenza del segnale attraverso il filtro, quindi mi chiedo quale potrebbe essere il numero minimo di tocchi che posso usare.

So che più tocchi possono portare a un taglio più netto della frequenza e a fermare meglio il rifiuto della banda, ecc. Tuttavia ciò che mi interessa è più fondamentale - se voglio implementare un filtro passa basso con cutoff su dicono che ciò significa che ho bisogno di almeno 100 tocchi per attenuare i segnali di frequenza più bassa? Oppure posso cavarmela con meno tocchi e in tal caso esiste un limite inferiore teorico?fS100

Risposte:


24

Citando la classica elaborazione digitale dei segnali di Bellanger - Teoria e pratica , il punto non è dove si trova la frequenza di taglio, ma quanta attenuazione hai bisogno, quanta ondulazione nel segnale che vuoi conservare puoi tollerare e, soprattutto, come restringere la transizione da pass-to stopband (larghezza di transizione) deve essere.

Suppongo che tu voglia un filtro di fase lineare (sebbene tu specifichi la latenza minima, non penso che un filtro di fase minimo sia una buona idea, in generale, a meno che tu non sappia dannatamente bene cosa farai dopo con il tuo segnale) . In tal caso, l'ordine del filtro (che è il numero di tocchi) è

N23log10[110δ1δ2]fSΔf

con

fS la frequenza di campionamentoΔf la larghezza di transizione, vale a dire. la differenza tra la banda di fine passaggio e l'inizio della banda di arrestoδ1 l'ondulazione nella banda passante, vale a dire. "quanta ampiezza originale puoi permetterti di variare"δ2 la soppressione nella banda di arresto.

Inseriamo alcuni numeri! È stata specificata una frequenza di taglio di fS100 , quindi andrò avanti e affermerò che la larghezza della transizione non sarà superiore alla metà, quindiΔf=fS200 .

Proveniente dalla tecnologia SDR / RF, 60 dB di soppressione sono in genere completamente sufficienti: hardware, senza costi folli, non sarà migliore nel mantenere i segnali indesiderati dal tuo input, quindi non sprechiamo la CPU per avere un filtro fantastico che è meglio di quello che può fare il tuo hardware. Quindi, δ2=-60 dB=10-3 .

Supponiamo che tu possa vivere con una variazione di ampiezza dello 0,1% nella banda passante (se puoi vivere con più, considera anche di rendere meno severo il requisito di soppressione). Questo è δ1=10-4 .

Quindi, collegandolo a:

NIl filtro di Tommy23log10[110δ1δ2]fSΔf=23log10[11010-410-3]fSfS200=23log10[11010-7]200=23log10[110-6]200=23(log10106)200=236200=800 .

Quindi, con i tuoi 200 tocchi, sei lontano, se usi una banda di passaggio estremamente stretta nel filtro come pensavo che avresti fatto.

Si noti che non è così deve essere un problema: prima di tutto, un filtro a 800 tocchi fa paura, ma francamente, solo a prima vista:

  • Come ho testato in questa risposta su StackOverflow : la CPU al giorno d'oggi è veloce , se si utilizza l'implementazione FIR ottimizzata per la CPU di qualcuno. Ad esempio, ho usato GNU Radio implementazione FFT-FIR di esattamente con lo schema delle specifiche del filtro sopra. Ho ottenuto una prestazione di 141 milioni di campioni al secondo, che potrebbe o non potrebbe bastare per te. Quindi, ecco il nostro caso di test specifico per la domanda (che mi ha richiesto pochi secondi per produrre):Filtraggio FIR FFT basato su radio GNUrisultati della tariffa: rate_avg = 1.40982e + 08
  • MMM=50120050=24 moltiplicazioni / accumulazioni per campione di input - molto più semplice. I filtri in GNU Radio generalmente hanno questa capacità. E in questo modo, anche con la FIR FFT (che non si presta molto bene all'implementazione di un decimatore polifasico), posso ottenere un altro fattore 2 in termini di prestazioni. Non posso fare molto di più. Questo è abbastanza vicino alla larghezza di banda RAM, nella mia esperienza, sul mio sistema. Per
  • Latenza: non importa. Davvero, no, a meno che non sia necessario. Lo stai facendo con le frequenze di campionamento audio tipiche? Ricorda,96kSS«ridicolosamente141SIGNORINAS
  • 1100

3
Lake DSP stava realizzando 256.000 filtri FIR in tempo reale dalla metà agli inizi degli anni '90. 1200 rubinetti? Phfffft! ;-)
Peter K.

2
@PeterK. Questo è lo spirito! Profondo rispetto per quella FIR 256kT - l'accuratezza numerica con cui hanno costruito deve essere stata mozzafiato come le dimensioni del design. Essendo troppo giovani per goderseli tecnologicamente, i primi anni '90 devono essere stati un periodo interessante. Ho parlato con un ingegnere qualche tempo fa che a quei tempi facevano i circuiti integrati DFT; la necessità di ASIC DSP specifici per l'applicazione sembrava essere alta quando le persone hanno realizzato ciò che era possibile DSP-saggio con piattaforme informatiche per gestire effettivamente i flussi di dati risultanti, ma nessun accelleratore "multiuso" in giro (a differenza di oggi).
Marcus Müller,

@ Peter. Sì, ma gli australiani ci tirano sempre in giro.
Robert Bristow-Johnson

@ robertbristow-johnson oy matey, che scherzo interno sta succedendo qui: D?
Marcus Müller,

2
@ MarcusMüller, anche se ci sembrava essere un aumento della popolarità di ASIC di allora rispetto ad oggi (e penso che sia perché tutti che era un ASIC spec / designer quindi ora solo utilizza FPGA) non ci sono stati "multi-purpose" DSP nei primi anni 90. quel LakeDSP è stato creato con 6 DSP56001.
robert bristow-johnson,

14

Per una stima rapida e molto pratica, mi piace la regola empirica di fred harris:

Ntun'pS=UNtten22*BT

dove:

Atten è l'attenuazione desiderata in dB,

BTBT=FStop-Fpun'SSFS

FStopFpun'SS

FS

Questo risulta molto vicino a quello che otterresti per un filtro di fase lineare con un'ondulazione passband di 0,1 dB. Uso spesso questa regola empirica per avere una prima idea del numero di tocchi necessari, quindi modificarlo tramite iterazione nel processo di progettazione del filtro.

Nota anche: questa regola empirica fornisce una visione approfondita di ciò che spinge davvero il numero di tocchi: fermare l'attenuazione della banda e la pendenza della banda di transizione (e l'ondulazione della banda passante, ma in genere - almeno per i filtri per i quali ho dovuto progettare applicazioni di comunicazione wireless - il requisito di attenuazione dominerebbe sull'ondulazione). Quindi la tua domanda nel dichiarare un cut-off a Fs / 100 è mancante quanto velocemente devi passare a una banda di stop.

FSFpun'SSFStop

Ntun'pS=6022*2/100=137

Giocare con questi numeri può anche dimostrare il significato nell'elaborazione della riduzione usando approcci di decimazione.


7

Aggiungendo alla risposta accettata, alcuni riferimenti aggiuntivi. Non scriverò le formule che possono essere coinvolte. Quelle formule producono principalmente regola dei pollici o approssimazioni da cui partire. Puoi armeggiare con questi numeri per il tuo vero design.

Una delle origini del design di Bellanger è: sulla complessità computazionale nei filtri digitali, 1981, Proc. Euro. Conf. Circuit Theory Design, M. Bellanger. È abbastanza difficile da ottenere, ma è fattibile . È interessante notare che specifica anche le formule per valutare il numero di bit per coefficiente, che dovrebbero essere considerati nell'implementazione aritmetica finita. Una versione più accessibile in francese è: Valutazione della complessità dei filtri numerici , 1982.

Diverse altre formule sono raccolte nella progettazione del filtro di risposta agli impulsi finiti , Manuale per l'elaborazione del segnale digitale, 1993, T. Samamaki.

Più recentemente, è possibile leggere una stima accurata della lunghezza minima del filtro per filtri digitali FIR ottimali , 2000, K. Ichige et al.

Infine, la progettazione efficiente della carta di filtri FIR con ordini di filtro minimi utilizzando l'ottimizzazione della norma l0 , 2014 richiede un design in cui l'ordine viene gradualmente ridotto.


4

minimizzare max(|H(ω)|)per tutti ω nella banda di arresto
soggetto a1δ|H(ω)|δ per tutti ω nella banda passante

I principali problemi pratici a cui riesco a pensare sarebbero il numero di campioni di frequenza utilizzati durante l'ottimizzazione, in quanto il comportamento dei campioni tra frequenze potrebbe causare effetti indesiderati. Quanto bene può adattarsi, dipende ovviamente dal numero di tocchi. Immagino che potresti dire che il numero minimo di tocchi è quando il problema diventa impossibile. Quindi una soluzione sarebbe quella di risolvere il problema di fattibilità.

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.