Perché dovrei usare i filtri digitali per il passa-banda piuttosto che manipolare i segnali nel dominio della frequenza e poi ripristinarli nel dominio del tempo?


15

Sono un principiante per l'elaborazione del segnale e so che questa domanda potrebbe essere troppo ampia. Ma vorrei ancora sentire i suggerimenti degli esperti.

Mi è stato insegnato a usare butter(per progettare il filtro Butterworth aka il filtro di magnitudo massimamente piatto) e le filtfiltfunzioni (filtro digitale a fase zero) per il filtro passa-banda dei segnali EEG (elettroencefalogramma) in MATLAB offline (cioè dopo il completamento della registrazione). In questo modo è possibile evitare l'inevitabile "ritardo" causato dal filtro digitale (ovvero filtro a fase zero).

Quindi, qualcuno mi ha chiesto perché non possiamo usare fft(Trasformata di Fourier veloce) per ottenere la rappresentazione del dominio in frequenza del segnale, e quindi impostare la potenza delle frequenze indesiderate su zero, seguita da ifft(Trasformata di Fourier veloce inversa) per recuperare i dati filtrati in tempo dominio per lo stesso scopo. Questa manipolazione nel dominio della frequenza mi è sembrata più semplice e ragionevole, e non ho davvero potuto rispondere al perché.

Quali sono i vantaggi e gli svantaggi dell'utilizzo del fft/ifftmetodo semplice per il filtro passa-banda? Perché le persone preferiscono usare i filtri digitali FIR o IIR?

Ad esempio, il fft/ifftmetodo è più soggetto a perdite spettrali o increspature rispetto ai filtri digitali stabiliti? Il metodo soffre anche di ritardo di fase? C'è un modo per visualizzare la risposta all'impulso per questo metodo di filtro per il confronto?


Domanda correlata (ma non necessariamente duplicata): electronics.stackexchange.com/questions/100348/why-use-a-filter/…
helloworld922

L'uso di una FFT per filtrare un segnale è assolutamente valido, ma ci sono alcune cose da tenere in considerazione. Vedere questo simile domanda / risposta per ulteriori informazioni: stackoverflow.com/a/2949227/565542
sbell

5
Domande come questa potrebbero essere più appropriate per il sito di elaborazione del segnale .
Jason R,

2
Penso che The Scientist and Engineer's Guide to Digital Signal Processing di Steven W. Smith abbia una risposta. Penso che affermi che il campionamento in - sample out è molto più efficiente con un filtro digitale. Ma c'è una larghezza minima della finestra (64 campioni o più, non ricordo esattamente) quando è più appropriato involeve la conversione FFT in cui è possibile avere un filtro brick nel dominio freq. L'efficienza non è l'unico problema. Il filtro brick implica che è necessario utilizzare campioni dal futuro, il che è impossibile in tempo reale.
Val

Grazie, stavo cercando qualcosa come il sito Signal Processing, ma non sono riuscito a trovarlo.
Kouichi C. Nakamura,

Risposte:


9

Il motivo principale per cui l'elaborazione del dominio di frequenza non viene eseguita direttamente è la latenza coinvolta. Per fare, diciamo, un FFT su un segnale, devi prima registrare l'intero segnale nel dominio del tempo, dall'inizio alla fine, prima di poterlo convertire in dominio della frequenza. Quindi è possibile eseguire l'elaborazione, riconvertirla nel dominio del tempo e riprodurre il risultato. Anche se le due conversioni e l'elaborazione del segnale nel mezzo sono effettivamente istantanee, non si ottiene il primo campione di risultati fino a quando non è stato registrato l'ultimo campione di input. Ma puoi ottenere risultati "ideali" nel dominio della frequenza se sei disposto a sopportarlo. Ad esempio, un brano di 3 minuti registrato a 44100 campioni / secondo richiederebbe 8 milioni di trasformazioni di punti, ma non è un grosso problema su una CPU moderna.

Potresti essere tentato di suddividere il segnale nel dominio del tempo in blocchi di dati di dimensioni fisse più piccoli e di elaborarli singolarmente, riducendo la latenza alla lunghezza di un blocco. Tuttavia, ciò non funziona a causa degli "effetti di bordo": i campioni alle estremità di un determinato blocco non si allineano correttamente con i campioni corrispondenti dei blocchi adiacenti, creando artefatti discutibili nei risultati.

Ciò accade a causa di ipotesi implicite nel processo che converte tra dominio del tempo e dominio della frequenza (e viceversa). Ad esempio, FFT e IFFT "assumono" che i dati siano ciclici; in altre parole, quei blocchi di dati identici nel dominio del tempo vengono prima e dopo l'elaborazione del blocco. Dal momento che questo non è generalmente vero, ottieni i manufatti.

L'elaborazione nel dominio del tempo può avere i suoi problemi, ma il fatto che tu possa controllare la latenza e non produca artefatti periodici lo rende un chiaro vincitore nella maggior parte delle applicazioni di elaborazione del segnale in tempo reale.

(Questa è una versione estesa della mia risposta precedente .)


1
Grazie mille per la risposta dettagliata in parole semplici. Ora posso vedere che nella mia domanda avrei dovuto menzionare che il mio lavoro è principalmente per l'analisi offline piuttosto che l'elaborazione online o in tempo reale. Modificherò la domanda. Il tuo punto è abbastanza chiaro: poiché FFT richiede l'intera durata dei dati, devi aspettare fino al termine della registrazione.
Kouichi C. Nakamura,

1
OK, abbastanza giusto. Vorrei solo sottolineare un'altra cosa sul filtro del dominio di frequenza che potrebbe o meno essere un problema per te: i filtri non saranno causali nel dominio del tempo. In altre parole, le loro risposte all'impulso si estendono in entrambi i tempi positivi e negativi. Questo può avere degli effetti sorprendenti se non ne sei consapevole.
Dave Tweed

Grazie. Ho cercato "Filtro causale" su Wikipedia. Per definizione, il furgone FFT non si preoccupa del tempo, quindi vedo che non è causale. Questa natura spiega perché non puoi usarlo per il filtraggio in tempo reale.
Kouichi C. Nakamura,

3
@DaveTweed: la tua affermazione sulla necessità di un FFT da 8 milioni di punti per filtrare un brano di 3 minuti campionato a 44,1 kHz non è corretta. Gli algoritmi di convoluzione basati su FFT sono infatti ampiamente utilizzati nella pratica. Metodi come overlap-save e overlap-add sono utilizzati in modo da richiedere dimensioni FFT più modeste (e quindi latenza di elaborazione). Queste tecniche fanno esattamente ciò che suggerisce il tuo secondo paragrafo: usa blocchi più piccoli mentre gestisci gli "effetti di bordo" che si verificano tra di loro.
Jason R,

2
@DaveTweed: non sono d'accordo. I metodi di convoluzione rapida come overlap-save e overlap-add sono equivalenti (fino alla precisione numerica) alla convoluzione lineare diretta (ovvero implementando il filtro nel dominio del tempo). Non vi è alcun compromesso delle prestazioni in condizioni al contorno di alcun tipo rispetto all'elaborazione nel dominio del tempo e la loro latenza limitata le rende ancora utili per molte applicazioni in tempo reale. Ritengo che l'affermazione secondo cui il filtraggio del dominio di frequenza richiede un grande FFT sull'intero segnale di ingresso non sia vera, e non sono sicuro di cosa intendiate con elaborazione "pura" del dominio di frequenza in questo contesto.
Jason R,

2

Puoi certamente usare i filtri ideali "boxcar" nel dominio della frequenza. La dualità afferma che ciò equivale a contorcersi con una funzione sincera di lunghezza infinita. Per ridurre gli artefatti associati alla riduzione della lunghezza, la funzione sinc viene spesso moltiplicata per una finestra. Potresti aver sentito parlare di Hamming, Hanning (in realtà von Hann), del coseno sollevato e di altre tecniche di windowing. La convoluzione può essere computazionalmente più semplice dell'approccio fft / ifft, ma le risposte sono le stesse.

Ogni metodo avrà aspetti positivi e negativi. Il Butterworth è IIR e i boxcar sono FIR. I Butterworth sono probabilmente più piatti nella banda passante, ma probabilmente con rolloff meno ripido, a seconda dell'ordine dell'IIR e della larghezza della FIR. filtfilt sarebbe più difficile da implementare in tempo reale.


1
Per una spiegazione molto chiara delle finestre e del filtraggio dei blocchi, guarda il libro, Filtri digitali di RW Hamming. Disponibile da Dover, quindi un prezzo molto conveniente. (Per inciso, Scott, penso che questo sia l'Hamming da cui prende il nome la finestra e von Hann è colui che ha ottenuto il suo nome macellato nel nominare la sua finestra)
The Photon,

Inoltre, sono abbastanza sicuro che un boxcar implementato con FFT sia, per definizione, perfettamente piatto nella banda passante. Quando diciamo che il filtro Butterworth è "massimamente piatto" credo che ne stiamo parlando solo nel contesto dei filtri causali (e Wiki afferma che anche così è possibile creare un filtro Chebychev inverso che è più piatto di un Butterworth).
The Photon,

1
Concordato per una lunghezza infinita ideale, ma non così sicuro dopo il troncamento e la finestra
Scott Seidman,

@ThePhoton Grazie per la correzione Hamming / von Hann. Impossibile visualizzare correttamente la mia libreria da casa.
Scott Seidman,

@The Photon; Grazie per il libro sui filtri digitali di Hamming . L'ho guardato e sembrava scritto soprattutto per gli studenti elementari. L'ho comprato con una speranza. :)
Kouichi C. Nakamura,

0

Domande correlate

Perché è una cattiva idea filtrare azzerando i contenitori FFT? /signals/6220/why-is-it-a-bad-idea-to-filter-by-zeroing-out-fft-bins

Rimuovere i valori da FFT risulta uguale al filtro? /signals/11487/removing-values-from-fft-result-same-as-filtering?noredirect=1&lq=1

Perché usiamo window nel dominio del tempo piuttosto che FFT per modificare lo spettro e non invertire FFT /signals/8911/why-do-we-use-window-in-time-domain-rather -than-do-FFT-modifica-the-gamma-e-t? noredirect = 1 & lq = 1

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.