Come posso progettare un filtro molto stretto?


15

Supponiamo di avere un segnale audio campionato a Hz e vorrei progettare un filtro passa-basso che isola tutto sotto ~ 60 Hz. Nel mondo digitale, questo è un filtro passa-basso con la banda passante a [ - π4800060. Inoltre, anche la banda di transizione dovrebbe essere ragionevole. Costruire un filtro FIR per questo può avere molti tocchi che a lungo andare influiscono sulla precisione. Un filtro IIR non è troppo ideale perché l'audio soffre per la risposta di fase non lineare nei filtri, quindi a meno che il segnale non sia filtrato, quindi invertito e filtrato di nuovo, non è davvero un'opzione.[-π400,π400]

Una trasformazione wavelet potrebbe essere migliore in questo rispetto al filtraggio regolare in una volta sola?


C'è un motivo per cui non vuoi decimare?
Lorem Ipsum,

No, decimare va bene finché ottengo quello che voglio.
Phonon,

1
Che cos'è una banda di transizione "ragionevole"? Questo determinerà l'ordine del tuo filtro. Se la tua banda di arresto inizia a 300 Hz, ad esempio, probabilmente sei in buona forma. Se desideri un'attenuazione elevata a qualcosa come 60,1 Hz, sarà lungo. I filtri FIR lunghi non sono necessariamente cattivi,
Jason R

5
È necessaria una specifica filtro specifica, altrimenti la domanda non ha senso. Indica l'ondulazione accettabile della banda passante, il rifiuto della banda di arresto, la larghezza della banda di transizione, ecc.
Paul R

Ha senso. Andrà bene.
Phonon,

Risposte:


20

Se stai ottimizzando i tempi di progettazione e ti trovi su una piattaforma che supporta bene FFT di grandi dimensioni (cioè non un punto fisso), segui i consigli di hotpaw2 e usa la convoluzione veloce . Funzionerà molto meglio di un'implementazione FIR ingenua e dovrebbe essere relativamente facile da implementare.

D'altra parte, se hai del tempo da dedicare a questo per ottenere la migliore implementazione o sei su una piattaforma a virgola fissa, dovresti usare una struttura multirate down-filter-up-sottrazione. Ma è un po 'più complicato fare tutto bene.

Ho accesso a implementazioni affidabili e altamente ottimizzate di strumenti di filtraggio multirate e convoluzione rapida. La convoluzione rapida richiede circa 3 volte più tempo per ottenere prestazioni del segnale equivalenti rispetto alla struttura multirate. Inoltre, questo è persino su una piattaforma a virgola mobile. Il divario si amplierebbe considerevolmente su un punto fisso dsp.

In termini generali:

Conversione verso il basso:

Usa 8 stadi di filtri a metà banda, decimali per 2 per trasformare il tuo segnale a 48kHz in un segnale a 187,5 Hz. Il primo stadio di questo downsampling può avere una banda di transizione molto ampia, che consente all'energia di alias purché non alias di nuovo nella gamma inferiore a 60 Hz. Man mano che le fasi progrediscono, il numero di tocchi deve aumentare, ma verranno applicati a frequenze di campionamento progressivamente inferiori, quindi il costo complessivo di ciascuna fase rimane ridotto.

filtraggio:

Esegui il filtraggio stretto intorno ai 60 Hz bw per mantenere l'energia che vorresti eventualmente sottrarre. Vi è un doppio vantaggio nel fare il filtro stretto a bassa frequenza:

  1. 1Hz di larghezza di banda di transizione è 256 volte maggiore in termini di frequenza digitale alla frequenza bassa rispetto alla frequenza originale. Quindi ogni tocco del filtro è 256 volte più potente.
  2. Il segnale stesso è a una velocità inferiore, quindi il filtro deve elaborare solo 1/256 dati.

Up-conversion:

In sostanza, questo è il contrario delle fasi di decimazione. Ciascuno degli 8 stadi dell'interpolatore raddoppia la velocità stimando il campione che passa tra campioni di input consecutivi. La banda di transizione si allarga all'aumentare della frequenza di campionamento.

Sottrarre:

Sottrai il segnale filtrato passa-basso a tariffa piena dal segnale originale. Se hai corretto correttamente tutti i ritardi di gruppo, la struttura complessiva sarà un filtro passa-alto con una larghezza di banda di transizione ridotta.


Questa è una risposta fantastica Posso avere i tuoi commenti su questo post? dsp.stackexchange.com/questions/29655/…
richieqianle

6

Prova un filtro di convoluzione add / save sovrapposto con il più lungo FFT / IFFT che si adatta ai tuoi limiti di latenza e prestazioni computazionali. È possibile progettare filtri FIR estremamente lunghi quando si utilizza questo metodo con FFT ancora più lunghi.

Se puoi FFT l'intero brano, o l'intero file di segnale audio, in un FFT + IFFT molto lungo (esistono algoritmi FFT speciali per vettori lunghi che non si adattano a dcache o RAM), non dovrai fare alcun si sovrappongono l'elaborazione di aggiunta / salvataggio e si ottiene una banda di transizione molto stretta.


4

Esistono chiaramente due scelte: FIR e IIR. Come già detto, FIR richiede una risposta all'impulso MOLTO lunga (1000s of taps) ed è costoso in termini di memoria, MIPS e latenza con aggiunta / salvataggio sovrapposti essendo la scelta più efficiente. Tuttavia, la latenza può essere un vero problema. Se si desidera utilizzarlo come passa alto per un subwoofer home theater, la latenza sarà così elevata che si perderà la sincronizzazione labiale con il video.

IIR è di molti ordini di grandezza meno costoso e quindi utilizzato frequentemente. In effetti ha una risposta di fase non piatta, ma in molti casi questo non è un problema o può essere risolto. Ad esempio, se è necessario un filtro passa-alto per proteggere i driver in un bass box, la risposta di fase non è molto importante poiché la risposta di fase complessiva del sistema è dominata dal driver, dall'armadio e dall'acustica nella stanza. Il filtro svolge solo un ruolo secondario qui. In molti casi è inoltre necessario mantenere una fase "relativa" non una fase assoluta. Supponiamo che tu voglia applicare l'highpass sul segnale A ma non sul segnale B, puoi semplicemente mettere un allpass corrispondente sul segnale B in modo che la fase relativa di A e B rimanga invariata. La latenza complessiva e il ritardo di gruppo di questo approccio è ancora molto inferiore a quello del metodo FIR.

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.