Ho pensato che DSP sarebbe stato fatto utilizzando FFT di porzioni di un segnale, modificare i campioni che risultano da FFT (poiché rappresentano lo spettro del nostro segnale + rumore) e rimuovere eventuali segnali indesiderati e quindi eseguire una FFT inversa per ottenere una rappresentazione nel dominio del tempo del segnale filtrato (il rumore è stato rimosso ora) . Questo tuttavia non viene fatto, invece facciamo tutto il lavoro nel dominio del tempo utilizzando le funzioni della finestra. Perché?
Se moltiplichiamo la funzione finestra nel dominio del tempo di quanto stiamo convolgendo la risposta in frequenza della funzione finestra con lo spettro del nostro segnale nel dominio della frequenza, come funziona? Voglio dire, se facessimo 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 usando la finestra.
-> Vediamo dove la mia confusione viene da. Per i filtri analogici, ad esempio il filtro passa basso, abbiamo questa risposta in frequenza simile a un impulso. Quando filtriamo un segnale, stiamo effettivamente moltiplicando lo spettro del nostro segnale con la risposta in frequenza simile a un impulso del filtro. Questo ridurrà tutte le frequenze del nostro segnale sopra un cut-off a 0. Questo è il modo in cui funziona essenzialmente un filtro passa-basso. Perché non fare lo stesso anche con i filtri digitali?
Commenti
- Possibile duplicato Perché è è una cattiva idea filtrare azzerando i contenitori FFT?
Risposta
Il windowing riduce lo spettro perdita.
Supponi di iniziare con $ \ sin (y) = \ cos (\ omega_0 t) $. Il periodo è ovviamente $ 2 \ pi / \ omega_0 $.
Ma se nessuno ti ha detto che il periodo è $ 2 \ pi / \ omega $ e scegli ciecamente lintervallo $ [0, 1.8 \ pi / \ omega_0] $ e prendi FFT di questa forma donda troncata, tu osserverà componenti di frequenza in altre frequenze che sono tutte false perché i salti creati copiando e incollando la forma donda troncata per periodicità non sono realmente presenti nel segnale originale – è un artefatto di uno sfortunato troncamento che non cattura la transizione tra i periodi in modo uniforme . Idealmente cè un solo componente spettrale in $ \ omega = \ omega_0 $.
Lo scopo del windowing nel dominio del tempo è ridurre tutte queste componenti spettrali fittizie.
Answer
Il windowing viene utilizzato perché i calcoli DFT operano sullestensione periodica infinita del segnale di ingresso. Poiché molti segnali effettivi non sono affatto periodici o vengono campionati su un intervallo diverso dal loro periodo effettivo, ciò può produrre false componenti di frequenza sul “bordo” artificiale tra intervalli ripetuti, chiamati leakage . Moltiplicando prima il segnale nel dominio del tempo per una funzione di windowing che va a zero ad entrambe le estremità, si crea una transizione graduale tra intervalli ripetuti nellestensione periodica infinita, mitigando così la creazione di queste componenti di frequenza artificiale quando si prende poi il DFT.
Questo documento offre uno sguardo più approfondito a questo fenomeno, nonché alcune informazioni sugli effetti delle diverse funzioni di windowing.
Risposta
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 filtraggio. Il filtraggio moltiplicando la FFT di un segnale per la risposta in frequenza del filtro è del tutto ragionevole in molte situazioni, ed è effettivamente fatto. Lalternativa per il filtraggio è il tempo -convoluzione del dominio (che è diversa dal windowing). Questo ha i suoi vantaggi, come operare su un segnale in “real-tim e “poiché viene misurato senza attendere che lintera cosa venga memorizzata e poi trasformata.
Quindi alla tua domanda” Perché non fare lo stesso anche con i filtri digitali? “, la risposta è semplicemente” lo facciamo , quando fa comodo. “
Commenti
- Ho anche limpressione che la convoluzione e il windowing si siano confusi nella domanda. Bene, lhai fatto notare!
Risposta
Ci sono state molte buone risposte a questa domanda. Tuttavia, ritengo che un punto importante non sia stato chiarito del tutto. Una parte della domanda era perché non moltiplichiamo semplicemente la FFT di un segnale con la risposta del filtro desiderata. Ad esempio, se vogliamo filtrare il nostro segnale passa-basso, potremmo semplicemente azzerare tutte le componenti di frequenza più alte della frequenza di taglio desiderata. Questa è in effetti una semplice applicazione del noto metodo di campionamento in frequenza per la progettazione di filtri FIR. Il problema è che possiamo semplicemente azzerare le componenti di frequenza discrete calcolate dalla FFT. Non abbiamo alcun controllo su ciò che accade tra queste frequenze discrete .Si scopre che una versione così semplice del filtraggio darà solo una scarsa attenuazione della banda di arresto (indipendentemente dalla lunghezza della FFT). Se hai accesso a matlab o octave, è molto istruttivo provarlo tu stesso:
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])
Answer
Se non si utilizza una finestra non rettangolare, i risultati FFT saranno già convoluti con la trasformazione di una finestra rettangolare predefinita (un Sinc periodico) prima di eseguire qualsiasi filtro nel dominio della frequenza. per esempio. otterrai due filtri applicati, uno dei quali probabilmente non vuoi.
Facendo finestrini nel dominio del tempo, prima del filtro FFT e del dominio della frequenza, sostituisci qualsiasi filtro (cosiddetto “leakage” ) fatto da finestre rettangolari, e quindi non si ottiene unulteriore convoluzione del filtro indesiderata.
Laltro modo per farlo è usare metodi di sovrapposizione-aggiunta o sovrapposizione di salvataggio su finestre consecutive, dove gli effetti di uno la finestra rettangolare viene annullata da effetti simili dalle finestre adiacenti.
Risposta
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 forma strana che sarebbe difficile da approssimare
- è necessario solo un numero finito di campioni (il windowing può essere fatto mentre il segnale fluisce)
eg da wikipedia
tagliare andando a zero delle funzioni di windowing significa che nel dominio spettrale hanno lobi laterali che vanno a zero molto lentamente. Se ci sbarazziamo di questo vincolo possiamo avere funzioni compatte sia nel dominio spaziale che spettrale, come il filtro gaussiano. Ciò significa che puoi filtrare tramite il dominio spettrale ma ciò richiede che lintero segnale sia noto.
Se hai già lintero segnale unaltra alternativa sarebbe usare wavelets
Risposta
Ho avuto la stessa domanda.
Una convoluzione è la somma integrale / cumulativa del segnale nel dominio del tempo moltiplicato per la finestra. Questo non deve essere confuso con il segnale nel dominio del tempo “a finestra”.
La fine di questo articolo mi ha aiutato molto.
Fondamentalmente si dice che i segnali reali sono finiti e tagliare bruscamente un segnale reale si traduce in molte frequenze / artefatti indesiderati nel dominio della frequenza.
Al fine di evitare / ridurre al minimo questi artefatti puoi utilizzare una funzione finestra uniforme (ad es. a forma di campana) in modo tale che il tuo campione inizi e termini con uno zero, anziché terminare bruscamente con un valore scalare diverso da zero.
Il campione con finestra sopra avrà meno artefatti nel dominio della frequenza rispetto al campione grezzo sotto.
Risposta
Esistono due grandi categorie associate a una FFT e sono 1) un modo efficiente per implementare un filtro FIR e 2) Analisi spettrale.
Per Filtraggio FIR, non ci si preoccupa delle finestre e non le si usa, a meno che la finestra non corrisponda ad un filtro, ma questo non è un comune sottile g da fare. La perdita non è un problema.
Lanalisi spettrale è dove si usano le finestre. Qui è dove guardi un sensore collegato a una grande macchina industriale e cerchi di capire se nel profondo delle sue viscere, un cuscinetto si guasta. I cuscinetti stridono quando si guastano, ma il rumore che possono causare è solitamente molto inferiore agli altri suoni emessi dalla macchina. È qui che entrano in gioco le perdite e la media. Dati i toni forti, la dispersione inonderà il segnale debole che stiamo cercando per alcuni contenitori. Migliora la sensibilità dellanalisi spettrale ai segnali deboli in presenza di segnali forti. Si verifica 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 Geophysics. Vedere il segnale debole è lobiettivo.
Risposta
La creazione di finestre nel dominio del tempo è necessaria per evitare che una singola frequenza non sia esattamente su un intervallo di frequenza da distribuire su tutto lo spettro. Forse questa pagina aiuta: http://www.sm5bsz.com/slfft/slfft.htm Linrad (il mio progetto di 20 anni fa) utilizza una finestra FFT, quindi applica un filtro nel dominio della frequenza (fare a zero ciò che non vogliamo.) Applicare una finestra – non passare bruscamente da peso 1 a peso 0 sui bin di frequenza. Quindi applica una FFT allindietro, ma ora su un numero di punti molto inferiore. Non è necessario includere tutti i bin di frequenza che sappiamo essere zero !! Come risultato otteniamo una funzione tempo con una dimensione molto più piccola, ovvero con una frequenza di campionamento molto inferiore. La procedura esegue il filtraggio e la decimazione in un unico passaggio.Questo è molto efficiente nel caso in cui si desideri filtrare più canali contemporaneamente. La home page di Linrad è qui: http://www.sm5bsz.com/linuxdsp/linrad.htm