Perché usiamo la finestra nel dominio del tempo piuttosto che la FFT modifica lo spettro e non la FFT inversa


16

Ho pensato che il DSP sarebbe stato fatto usando FFT di porzioni di un segnale, modificare i campioni risultanti da FFT (poiché rappresentano lo spettro del nostro segnale + rumore) e rimuovere qualsiasi segnale indesiderato e fare un FFT inverso per ottenere un tempo rappresentazione del dominio del segnale filtrato (il rumore è stato rimosso ora). Questo comunque non è fatto, invece facciamo tutto il lavoro nel dominio del tempo usando le funzioni della finestra. Perché?

Se moltiplichiamo la funzione finestra nel dominio del tempo di quanto stiamo contorcendo la risposta in frequenza della funzione finestra con lo spettro del nostro segnale nel dominio della frequenza, come funziona? Voglio dire se avessimo fatto tutto il lavoro nel dominio della frequenza moltiplicando il nostro segnale con la risposta in frequenza del filtro, sarebbe come filtrare, giusto? Ma qui facciamo tutto nel dominio del tempo invece che usando window.

-> Vediamo da dove viene la mia confusione. Per i filtri analogici, ad es. Filtro passa-basso, abbiamo questo impulso come la risposta in frequenza. Quando filtriamo un segnale, moltiplichiamo efficacemente lo spettro del nostro segnale con l'impulso come la risposta in frequenza del filtro. Ciò ridurrà tutte le frequenze nel nostro segnale al di sopra di un valore di taglio a 0. Ecco come funziona essenzialmente un filtro passa-basso. Perché non fare lo stesso anche con i filtri digitali?


Risposte:


7

Le finestre riducono le perdite spettrali.

Supponi di iniziare con un . Il periodo è ovviamente di 2 π / ω 0 . peccato(y)=cos(ω0t)2π/ω0

Ma se nessuno ti ha detto che il periodo è e scegli ciecamente l'intervallo [ 0 , 1,8 π / ω 0 ] e prendi FFT di questa forma d'onda troncata, osserverai i componenti di frequenza in altre frequenze che sono tutti falsi perché il i salti creati incollando e copiando la forma d'onda troncata per periodicità non sono realmente presenti nel segnale originale - è un artefatto di un troncamento sfortunato che non cattura la transizione tra i periodi senza intoppi. Idealmente esiste un solo componente spettrale in ω = ω 0 . 2π/ω[0,1.8π/ω0]ω=ω0

Lo scopo delle finestre nel dominio del tempo è ridurre tutte queste componenti spettrali fittizie.


12

Il windowing viene utilizzato perché i calcoli DFT operano sull'estensione infinita periodica del segnale di ingresso. Poiché molti segnali effettivi non sono affatto periodici o vengono campionati in un intervallo diverso dal loro periodo effettivo, ciò può produrre componenti a falsa frequenza sul "bordo" artificiale tra intervalli ripetuti, detti perdite . Moltiplicando prima il segnale nel dominio del tempo per una funzione di windowing che va a zero su entrambe le estremità, si crea una transizione graduale tra intervalli ripetuti nell'estensione infinita periodica, mitigando così la creazione di questi componenti di frequenza artificiale quando prendiamo quindi il DFT.

Questo documento fornisce uno sguardo più approfondito a questo fenomeno, nonché alcune informazioni sugli effetti delle diverse funzioni di finestre.


11

Penso che tu stia confondendo due diverse operazioni.

Le finestre nel dominio del tempo sono spiegate da @sam, quindi non lo ripeterò. Ma il windowing non viene eseguito per eseguire il filtro. Il filtro moltiplicando la FFT di un segnale per la risposta in frequenza del filtro è del tutto ragionevole in molte situazioni, ed è effettivamente fatto. L'alternativa per il filtro è la convoluzione nel dominio del tempo (che è diversa dalla finestra). Ciò ha i suoi vantaggi, come operare su un segnale in "tempo reale" in quanto viene misurato senza attendere che tutto venga archiviato e trasformato.

Quindi alla tua domanda "Perché non fare lo stesso anche con i filtri digitali?", La risposta è semplicemente "facciamo, quando va bene".


Ho anche l'impressione che convoluzione e finestre si siano confuse nella domanda. Bene, l'hai sottolineato!
Deve il

11

Ci sono state diverse buone risposte a questa domanda. Tuttavia, ritengo che un punto importante non sia stato chiarito del tutto. Una parte della domanda era perché non si moltiplica semplicemente la FFT di un segnale per la risposta del filtro desiderata. Ad esempio, se vogliamo filtrare il segnale passa basso, potremmo semplicemente azzerare tutti i componenti di frequenza più in alto della frequenza di taglio desiderata. Questa è in effetti una semplice applicazione del noto metodo di campionamento di frequenza per la progettazione di filtri FIR. Il problema è che possiamo azzerare i componenti di frequenza discreti calcolati dalla FFT. Non abbiamo alcun controllo su ciò che accade tra queste frequenze discrete. Si scopre che una versione così semplice del filtro darà solo una scarsa attenuazione della banda di arresto (indipendentemente dalla lunghezza FFT). Se hai accesso a matlab o ottava, è "

x=2*rand(1024,1)-1;
X=fft(x);
Y=X.*[ones(200,1);zeros(625,1);ones(199,1)]; % lowpass filter
y=real(ifft(Y)); % real() just to remove numerical errors
Y=fft(y,4096);
plot(20*log10(abs(Y(1:2048)))),axis([0,2048,-30,50])

6

Se non si utilizza una finestra non rettangolare, i risultati FFT saranno già contorti con la trasformazione di una finestra rettangolare predefinita (un Sinc periodico) prima di eseguire qualsiasi filtro del dominio di frequenza. ad esempio, verranno applicati due filtri, uno dei quali probabilmente non si desidera.

Eseguendo le finestre nel dominio del tempo, prima del filtraggio FFT e dei domini di frequenza, si sostituisce qualsiasi filtro (cosiddetto "perdita") effettuato da finestre rettangolari e quindi non si ottiene un'ulteriore convoluzione indesiderata del filtro.

L'altro modo per farlo è utilizzare i metodi di sovrapposizione-aggiunta o sovrapposizione di salvataggio su finestre consecutive, in cui gli effetti di una finestra rettangolare vengono annullati da effetti simili dalle finestre adiacenti.


5

Finestra nel dominio del tempo perché

  • possiamo garantire zero ai bordi della finestra
  • le funzioni della finestra hanno una bella espressione analitica nel dominio spaziale
  • molte funzioni della finestra hanno uno spettro di forme strane che sarebbe difficile approssimare
  • è necessario solo un numero finito di campioni (è possibile eseguire il windowing quando il segnale entra)

ad es. da Wikipedia

inserisci qui la descrizione dell'immagine

Il duro taglio che porta a zero delle funzioni di finestratura significa che nel dominio spettrale hanno i lobi laterali che vanno a zero molto lentamente. Se eliminiamo questo vincolo, possiamo avere funzioni compatte in entrambi i domini spaziale e spettrale, come il filtro gaussiano. Ciò significa che è possibile filtrare tramite il dominio spettrale ma che richiede che l'intero segnale sia noto.

Se hai già l'intero segnale, un'altra alternativa sarebbe quella di usare le wavelet


2

Ho avuto la stessa domanda.

Una convoluzione è la somma integrale / cumulativa del segnale del dominio del tempo moltiplicato per la finestra. Questo non deve essere confuso con il segnale del dominio del tempo "finestra".

La fine di questo articolo mi ha aiutato molto.

Sostanzialmente afferma che i segnali reali sono limitati e che interrompono bruscamente un segnale reale si traducono in molte frequenze / artefatti indesiderati nel dominio della frequenza.

Per evitare / ridurre al minimo questi artefatti, è possibile utilizzare una funzione di finestra liscia (ad es. A forma di campana) in modo che il campione inizi e termini con uno zero, anziché terminare bruscamente con un valore scalare diverso da zero.

Taglio liscio

Il campione con finestra sopra avrà meno artefatti nel dominio della frequenza rispetto al campione grezzo sotto.

Improvvisamente interrotto


1

Esistono due grandi categorie associate a una FFT e sono 1) un modo efficace per implementare un filtro FIR e 2) Analisi spettrale.

Per il filtro FIR, non ci si preoccupa delle finestre e non le si utilizza, a meno che la finestra non corrisponda a un filtro, ma non è una cosa comune da fare. La perdita non è un problema.

L'analisi spettrale è dove si usano le finestre. Qui è dove guardi un sensore attaccato a una grande macchina industriale e cerchi di capire se in profondità nelle sue viscere, un cuscinetto che non funziona. I cuscinetti squittiscono quando falliscono, ma il rumore che possono essere è di solito molto più basso degli altri suoni emessi dalla macchina. È qui che entrano in gioco le perdite e la media. Dati i toni forti, le perdite travolgeranno il segnale debole che stiamo cercando tra alcuni bin. Migliora la sensibilità dell'analisi spettrale ai segnali deboli in presenza di segnali forti. C'è un effetto simile quando il rumore di fondo è inclinato. Le informazioni che cerchiamo sono nel dominio della frequenza. Questo è lo stesso problema in RADAR, SONAR e Geofisica. Vedere il segnale debole è l'obiettivo.


1

La finestra nel dominio del tempo è necessaria per evitare che una singola frequenza che non si trova esattamente su un bin di frequenza si estenda su tutto lo spettro. Forse questa pagina aiuta: http://www.sm5bsz.com/slfft/slfft.htm Linrad (il mio progetto di 20 anni) usa un FFT con finestre, quindi applica un filtro nel dominio della frequenza (rendi zero ciò che non vogliamo). Applica una finestra - non passare bruscamente dal peso 1 al peso 0 sui bin della frequenza. Quindi applica una FFT all'indietro, ma ora su un numero di punti molto più piccolo. Non è necessario includere tutti i bin di frequenza che sappiamo essere zero !! Come risultato otteniamo una funzione temporale con dimensioni molto più piccole, ovvero con una frequenza di campionamento molto più bassa. La procedura esegue il filtraggio e la decimazione in un unico passaggio. Questo è molto efficace nel caso in cui si desideri filtrare più canali contemporaneamente. La home page di Linrad è qui: http://www.sm5bsz.com/linuxdsp/linrad.htm

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.