DFT - Rimozione dell'effetto finestra nel dominio spettrale con convoluzione


11

Stavo pensando all'argomento DFT per finestre e mi è venuto in mente un pensiero. Un DFT produrrà lo spettro di un segnale contorto con lo spettro della finestra utilizzata, avendo quindi i lobi principali e i lobi laterali.

Ho pensato che sarebbe stato possibile rimuovere l'effetto finestra sullo spettro del segnale contorcendo di nuovo sia il segnale che l'ampiezza dello spettro della finestra, e ha effettivamente funzionato come si può vedere nella seguente immagine.

inserisci qui la descrizione dell'immagine

A sinistra è lo spettro originale generato con una finestra sospesa. A destra è lo spettro contorto dal DFT di una finestra sospesa. In alto è lo spettro stesso, in basso è il findpeaksrisultato MATLAB .

Non ho mai letto nulla riguardo a questa tecnica, ma sono abbastanza sicuro di non aver inventato nulla lì. Quindi mi chiedo se ci sia un vantaggio nel fare questa elaborazione sullo spettro o se c'è un aspetto negativo che non vedo.

Da quello che vedo, questo potrebbe aiutare il rilevamento dei picchi come possiamo vedere nell'immagine precedente. Inoltre, sembra che lo spettro sia leggermente distorto, come possiamo vedere dalle 2 immagini seguenti. :

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Dove il grafico blu è lo spettro e il grafico rosso lo spettro post-contorto.

  • Qualche pensiero a riguardo?
  • C'è un problema che potrebbe sorgere da questa convoluzione post-FFT?
  • Qualche documento che tratta l'argomento?

MODIFICARE

Puoi trovare uno script qui che genererà il seguente grafico:

inserisci qui la descrizione dell'immagine


1
Potresti fornire il codice che hai usato per tracciare le figure? Presumo che la fluidità della funzione convoluta sia solo una questione di risoluzione. Non è possibile annullare la finestratura convolvendo ancora di più una volta con la stessa finestra (si avrebbe davvero bisogno di de convolve, che è ciò che la risposta di RBJ si riferisce a). Inoltre, un vero miglioramento sarebbe una maggiore risoluzione in frequenza e / o una maggiore soppressione laterale, nessuna delle quali qui viene raggiunta. Trovare i picchi "corretti" è relativamente facile per entrambe le funzioni.
Matt L.

Ho appena modificato il mio post per aggiungere un esempio di codice.
Pier-Yves Lessard,

Risposte:


1

C'è, in effetti, un aspetto negativo del tuo suggerimento: i segnali che hai mostrato sono tutti molto chiaramente divisi nelle loro componenti di frequenza, ma in generale, i segnali della vita reale tendono ad essere più rumorosi.

A seconda dell'applicazione, si vorrebbe lo stesso smorzamento delle perdite (lobi principali più alti / lobi laterali più piccoli di una frequenza del segnale nello spettro trasformato) o, come altro esempio, il lobo principale più stretto possibile.

Nelle tue trame, è visibile che levigare gli spettri di magnitudo con una finestra fa l'opposto di questi: i lobi principali diventano sempre più piccoli, mentre i prodotti in perdita trasformano un segnale di tempo finito in potenza. Applicato a segnali rumorosi, ciò comporterebbe uno svantaggio significativo.

Il tuo suggerimento, tuttavia, è ancora abbastanza utile per l'identificazione del picco!


1

rimanendo fedele all'argomento "rimuovere l'effetto finestra nel dominio freq tramite convoluzione" (nonostante l'OP volesse forse ottenere qualcos'altro o qualcosa di simile), sento di aggiungere il mio commento avendo esperienza personale su questo argomento specifico.

Spesso ho la necessità di rimuovere una finestra di Hann nel dominio della frequenza, lavorando in un framework STFT che utilizza i frame con finestra di Hann come impostazione predefinita, per eseguire un'elaborazione spettrale avanzata in cui invece si prevede lo spettro di input come NON con finestra (ad es. filtraggio).

In una parola: sì, puoi. Nonostante la rimozione matematica di una finestra (nel dominio del tempo o della frequenza) implica la ricostruzione di dati persi per sempre, in pratica è possibile con una probabile perdita minima.

Prendiamo una finestra di Hann (coseno rialzato). La sua formula nel dominio del tempo è y = (1-cos (pi * x)) / 2 con x che varia da zero a ed esclude uno attraverso il frame. La rappresentazione del dominio di frequenza corrispondente è bin0 = (0,5,0i), bin1 = (- 0,5,0i). Per rimuovere il suo effetto nel dominio del tempo potresti semplicemente voler dividere il segnale per la suddetta funzione della finestra. Per fare lo stesso nel dominio della frequenza, puoi semplicemente convolgere lo spettro in modo da non avere finestre con lo spettro del reciproco di detta funzione. Poiché questa funzione è zero su entrambe le estremità (in realtà è matematicamente zero solo al primo punto, a meno che non si verifichino errori di arrotondamento), per evitare l'infinito è possibile scambiare semplicemente l'infinito con un valore elevato come 10000 o giù di lì. Il risultato di tale convoluzione è lo spettro senza finestre. Convertendolo nel dominio del tempo,

Forse non è possibile rimuovere una finestra rettangolare, poiché in teoria è impossibile recuperare la quantità di dati persi moltiplicando per zero ampie aree del segnale. Ma penso che questo dipenda dal contenuto dello spettro. Ad esempio, se si tratta dello spettro di una semplice sinusoide, rimuovendo il modello di finestra rettangolare contorcendosi con lo spettro di una funzione che ha un valore elevato in cui il rettangolo era zero e uno in cui era uno (ovvero il suo reciproco), forse puoi ancora ottenere (sostanzialmente) lo spettro di una sinusoide per ricostruire l'intero segnale.


0

è una buona domanda e una buona intuizione che sono abbastanza sicuro che altri abbiano avuto. la de- convoluzione nel dominio della frequenza è come moltiplicarsi nel dominio del tempo e se si deconvolge l'effetto di una finestra di Hann nel dominio della frequenza, è come se si dividesse per l'effetto della finestra di Hann nel dominio del tempo. alle code in cui la finestra di Hann va a zero, c'è un numero troppo piccolo di cui preoccuparsi.

di solito l'effetto della finestra viene lasciato perché se ti stai trasformando indietro potresti volere l'effetto della finestra nel dominio del tempo. o se non ti stai mai trasformando indietro (questa è un'analisi o una modellazione alg e non una modifica alg) allora ti interessano solo i parametri che sono proprietà di quei picchi, e hai solo a che fare con l'effetto noto della convoluzione con un noto kernel e che potrebbero modificare un parametro estratto in modo deterministico. allora devi solo compensare quello nel tuo parametro estratto.

infine, a seconda di ciò che stai facendo, potresti prendere in considerazione l'uso di una finestra guassiana per l'analisi. ha pochissimo problema con i sidelobe e in condizioni lineari (come un filtro), ogni sinusoide con finestra mantiene la forma con finestra quando viene trasformato nel dominio del tempo. quella finestra può essere annullata e una finestra di Hann applicata dopo essere tornata al dominio del tempo.


6
In linea di principio, accetto le tue dichiarazioni. Tuttavia, l'OP non sta parlando di deconvoluzione, ma contorce lo spettro ottenuto con lo spettro della finestra sospesa. (ovvero essenzialmente finestre con una finestra quadrata)
Maximilian Matthé,

1
no, l'OP sta parlando di rimuovere l'effetto, non di raddoppiare l'effetto. la divisione è uguale alla moltiplicazione per il reciproco. si sta moltiplicando per un tale numero che ti dà il risultato che chiamiamo il quoziente . essendo che la convoluzione in un dominio equivale alla moltiplicazione nell'altro dominio, allora la deconvoluzione è la stessa della convoluzione con qualcosa di particolarmente determinato.
robert bristow-johnson il

2
L'OP sta parlando di rimuovere le increspature, eseguendo una convoluzione dello spettro ottenuto con lo spettro della finestra. Ciò produce una moltiplicazione del segnale con la finestra quadrata (una finestra dalla moltiplicazione iniziale nel tempo, la seconda proveniente dalla convoluzione in frequenza)
Maximilian Matthé,

1
Bene, non esattamente. Faccio una convoluzione delle dimensioni dello spettro che producono risultati diversi dalla moltiplicazione della finestra quadrata. Non sono sicuro di ciò che rappresenta matematicamente ... Lo vedo come una correlazione incrociata tra le due magnitudini dello spettro (poiché gli spettri di Windows sono simmetrici).
Pier-Yves Lessard,

0

La tecnica che hai usato per smussare lo spettro è spesso usata quando analizzi lo spettro stesso e non ti preoccupi degli effetti nel dominio del tempo (ad es. Facendo il rilevamento del segnale basato sulla frequenza o la misurazione della larghezza di banda). Non è nemmeno richiesto che la finestra utilizzata per il livellamento sia la stessa della finestra utilizzata nel dominio del tempo. Uno dei motivi principali per utilizzare una finestra nel dominio del tempo prima del DFT è quello di ridurre al minimo la discontinuità nell'avvolgimento che il DFT assume alle estremità del segnale (il DFT è intrinsecamente circolare). Lo scopo del livellamento nel dominio della frequenza è facilitare l'analisi come il rilevamento di picco o la misurazione della larghezza di banda. La finestra "migliore" per uno potrebbe non essere la finestra "migliore" per l'altro. In effetti, non ho mai visto il DFT di una finestra usato per il livellamento spettrale.


Il modo in cui lo capisco è che sto facendo una correlazione incrociata con lo spettro, quindi ottenendo picchi al centro dei lobi principali. L'uso delle finestre del dominio del tempo sembra una scelta ovvia e non vedo perché dovrei usare una correlazione incrociata delle finestre del vagone per trovare dove si trova lo spettro delle finestre sospese. Perché dovremmo voler qualcos'altro oltre alla stessa finestra?
Pier-Yves Lessard,

Sì, il risultato che descrivi è una convoluzione con l'autocorrelazione della finestra, ma è solo una convoluzione con una finestra diversa. L'autocorrelazione si tradurrà in un picco MOLTO stretto a DC. Quindi hai coinvolto efficacemente lo spettro del segnale con un filtro passa-basso molto stretto. È la risposta in frequenza di questo filtro che ti sta dando il risultato che vedi, non il fatto che si tratti di un'autocorrelazione. Il fatto che si tratti di un'autocorrelazione è una coincidenza.
Cassman,
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.