Qual è il vantaggio del filtfilt di MATLAB


30

MATLAB filtfiltesegue un filtro avanti-indietro, cioè filtra, inverte il segnale, filtra di nuovo e poi inverte di nuovo. Apparentemente questo fatto per ridurre i ritardi di fase? Quali sono i vantaggi / gli svantaggi dell'utilizzo di un tale filtro (suppongo che si tradurrebbe in un effettivo aumento dell'ordine dei filtri).

Sarebbe preferibile utilizzare filtfiltsempre anziché filter(ovvero, solo il filtro in avanti)? Ci sono applicazioni in cui è necessario usare questo e dove non dovrebbe essere usato?


Non utilizzare il filtro a fase zero per l'audio, in quanto provoca "pre-squillo" che suona strano. Il filtraggio in fase minima è più naturale. ccrma.stanford.edu/~jos/filters/Linear_Phase_Really_Ideal.html
endolith

Risposte:


34

Puoi guardarlo meglio nel dominio della frequenza. Se è la sequenza di input e è la risposta all'impulso del filtro, il risultato del primo passaggio del filtro èh [ n ]x[n]h[n]

X(ejω)H(ejω)

con e le trasformate di Fourier di e , rispettivamente. L'inversione del tempo corrisponde alla sostituzione di con nel dominio della frequenza, quindi dopo l'inversione del tempo otteniamoH ( e j ω ) x [ n ] h [ n ] ω - ωX(ejω)H(ejω)x[n]h[n]ωω

X(ejω)H(ejω)

Il secondo passaggio del filtro corrisponde a un'altra moltiplicazione con :H(ejω)

X(ejω)H(ejω)H(ejω)

che dopo l'inversione temporale dà finalmente lo spettro del segnale di uscita

(1)Y(ejω)=X(ejω)H(ejω)H(ejω)=X(ejω)|H(ejω)|2

perché per i coefficienti di filtro a valori reali abbiamo . L'equazione (1) mostra che lo spettro di uscita si ottiene filtrando con un filtro con risposta in frequenza , che è puramente valutato, cioè la sua fase è zero e di conseguenza ci sono nessuna distorsione di fase.| H ( e j ω ) | 2H(ejω)=H(ejω)|H(ejω)|2

Questa è la teoria Nell'elaborazione in tempo reale c'è ovviamente un notevole ritardo perché l'inversione del tempo funziona solo se si consente una latenza corrispondente alla lunghezza del blocco di input. Ma questo non cambia il fatto che non ci sono distorsioni di fase, è solo un ulteriore ritardo dei dati di uscita. Per il filtro FIR, questo approccio non è particolarmente utile perché potresti anche definire un nuovo filtro e ottenere lo stesso risultato con un filtro ordinario. È più interessante utilizzare questo metodo con i filtri IIR, poiché non possono avere fase zero (o fase lineare, cioè un ritardo puro).h^[n]=h[n]h[n]

In sintesi:

  • se hai o hai bisogno di un filtro IIR e vuoi distorsione di fase zero, E il ritardo di elaborazione non è un problema, questo metodo è utile

  • se il ritardo di elaborazione è un problema, non dovresti usarlo

  • se si dispone di un filtro FIR, è possibile calcolare facilmente una nuova risposta del filtro FIR che equivale a utilizzare questo metodo. Notare che con i filtri FIR è sempre possibile realizzare una fase esattamente lineare.


Ho creato un tag chiamato maximum-aposteriori-estimation. Potresti per favore rinominarlo in maximum-a-posteriori-estimation? Per errore ho dimenticato il -dopo il a. Grazie.
Royi,

15

Ho trovato questo video molto, molto utile (si basa sulla risposta di Matt).

Ecco alcune idee chiave del video:

  • La fase zero non comporterà alcuna distorsione di fase, ma comporterà un filtro non causale. Ciò significa che se i dati vengono filtrati mentre vengono raccolti, questa non sarà un'opzione (valida solo per i dati memorizzati che possiamo postelaborare).inserisci qui la descrizione dell'immagine
  • Quando si implementa un filtro non causale, i transitori vengono sfocati in avanti e indietro (ad es. Se vogliamo un'ondulazione di 2 dB, il fatto che eseguiremo una corsa in avanti e indietro utilizzando il filtro significa che vorremmo questi per avere 1dB).inserisci qui la descrizione dell'immagine
  • Utilizza la proprietà di inversione temporale della trasformata di Fourier a tempo discreto. inserisci qui la descrizione dell'immagine
  • La risposta in frequenza effettiva causata da FILTFILT è l'entità di quella in una direzione, al quadrato. Prendi il tuo segnale di input x[n], lo filtra, inverti il ​​risultato, lo filtri di nuovo e lo inverti di nuovo (il passaggio di inversione temporale richiede che tutti i dati siano disponibili).inserisci qui la descrizione dell'immagine
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.