Quali coefficienti tempo-frequenza vengono calcolati da Wavelet?


26

La Trasformata di Fourier veloce accetta le operazioni , mentre la Trasformazione di Fast Wavelet prende . Ma cosa calcola in particolare l'FWT?O(NlogN)O(N)

Sebbene vengano spesso confrontati, sembra che FFT e FWT siano mele e arance. A quanto ho capito, sarebbe più appropriato confrontare gli STFT (FFT di piccoli pezzi nel tempo) con il complesso Morlet WT , dal momento che entrambi sono rappresentazioni tempo-frequenza basate su sinusoidi complessi (per favore correggimi se sbaglio ). Questo è spesso mostrato con un diagramma come questo:

Griglie che mostrano come i coefficienti di FFT e WT corrispondono al piano tempo-frequenza

( Un altro esempio )

La sinistra mostra come lo STFT è un gruppo di FFT sovrapposte l'una all'altra col passare del tempo (questa rappresentazione è l'origine dello spettrogramma ), mentre la destra mostra il diadico WT, che ha una migliore risoluzione temporale ad alte frequenze e una migliore frequenza risoluzione alle basse frequenze (questa rappresentazione è chiamata scalogramma ). In questo esempio, N per STFT è il numero di colonne verticali (6) e una singola operazione FFT di O(NlogN) calcola una singola riga di N coefficienti da N campioni. Il totale è di 8 FFT da 6 punti ciascuno o 48 campioni nel dominio del tempo.

Quello che non capisco:

  • Quanti coefficienti viene calcolata una singola operazione FWT e dove si trovano sul grafico frequenza-tempo sopra? O(N)

  • Quali rettangoli vengono riempiti da un singolo calcolo?

  • Se calcoliamo un blocco di area uguale di coefficienti tempo-frequenza utilizzando entrambi, otteniamo la stessa quantità di dati?

  • L'FWT è ancora più efficiente dell'FFT?

Esempio concreto usando PyWavelets :

In [2]: dwt([1, 0, 0, 0, 0, 0, 0, 0], 'haar')
Out[2]:
(array([ 0.70710678,  0.        ,  0.        ,  0.        ]),
 array([ 0.70710678,  0.        ,  0.        ,  0.        ]))

Crea due serie di 4 coefficienti, quindi è uguale al numero di campioni nel segnale originale. Ma qual è la relazione tra questi 8 coefficienti e le piastrelle nel diagramma?

Aggiornare:

In realtà, probabilmente stavo facendo questo male, e dovrei usare wavedec(), che fa una decomposizione DWT a più livelli:

In [4]: wavedec([1, 0, 0, 0, 0, 0, 0, 0], 'haar')
Out[4]: 
[array([ 0.35355339]),
 array([ 0.35355339]),
 array([ 0.5,  0. ]),
 array([ 0.70710678,  0.        ,  0.        ,  0.        ])]

2
Al fine di avere una migliore comprensione di come funzionano la decomposizione di queste wavelet, uno strumento utile sarebbe quello di poterlo fare su segnali di vita reale: segnale audio per esempio (ho una domanda in questa direzione qui dsp.stackexchange.com/ domande / 12694 / stft-and-dwt-
wavelets

@endolith La tua domanda è ancora richiesta? In tal caso, posso aggiungere altri suggerimenti
Laurent Duval,

@LaurentDuval Sì, è ancora aperto e ancora non capisco. Potrei essere confuso perché CWT usa cose come Morlet e DWT usa solo cose come Haar o Daubechies. Non sono sicuro se il FWT veloce sia solo Haar o possa usare anche altri tipi di wavelet.
endolito

2
@ndolith Solo un commento per questo: il CWT continuo ammette un'incredibile quantità di potenziali forme wavelet. Possono essere discretizzati esattamente solo con modelli di campionamento (in tempo o scala) che rispettano alcune disuguaglianze di "Heisenberg". Questi schemi dipendono dal wavelet. Nella maggior parte dei casi, i modelli rendono un CWT discretizzato ridondante. Alcuni lo vogliono non ridondante, con una scala diadica. Solo pochissime wavelet lo consentono. Se poi imponi che il supporto wavelet sia finito, allora Haar è uno, quasi impossibile da ottenere con "wavelet naturali", ecco perché sono stati costruiti quelli di Daubechies
Laurent Duval,

Risposte:


13

Hai ragione sul fatto che l'FWT sia meglio pensato come un "cugino" della STFT, piuttosto che l'FT. In effetti, l'FWT è solo un campionamento discreto del CWT (trasformata wavelet continua), poiché l'FFT / DFT è un campionamento discreto della trasformata di Fourier. Questo può sembrare un punto sottile, ma è rilevante quando si sceglie come discretizzare la trasformazione.

Il CWT e lo STFT sono entrambi analisi ridondanti di un segnale. In altre parole, hai più "coefficienti" (nel caso discreto) di quelli necessari per rappresentare completamente un segnale. Tuttavia, una trasformata di Fourier (o dire una trasformazione wavelet che usa solo una scala) integra un segnale da -infinito a + infinito. Questo non è molto utile sui segnali del mondo reale, quindi tronciamo (cioè la finestra) le trasformazioni su lunghezze più brevi. Il windowing di un segnale cambia la trasformazione - moltiplichi per la finestra nel tempo / spazio, quindi nello spazio di trasformazione hai la convoluzione della trasformazione della finestra con la trasformazione del segnale.

Nel caso dello STFT, le finestre hanno (di solito) la stessa lunghezza (estensione diversa da zero) in qualsiasi momento e sono indipendenti dalla frequenza (il segnale di una finestra da 10 Hz ha la stessa larghezza di un segnale da 10 kHz). Quindi ottieni lo spettrogramma a griglia rettangolare come hai disegnato.

Il CWT ha questa finestra integrata dal fatto che le wavelet si accorciano (nel tempo o nello spazio) man mano che la scala diminuisce (come una frequenza più alta). Pertanto, per frequenze più alte, la finestra effettiva ha una durata più breve e si finisce con un scaleogramma che assomiglia a quello che si è disegnato per l'FWT.

Il modo in cui discretizzi il CWT dipende in parte da te, anche se penso che ci siano campionamenti minimi sia in shift che in scala per rappresentare pienamente un segnale. In genere (almeno come li ho usati), per la scala più bassa (massima frequenza), campionerai in tutte le posizioni di spostamento (tempo / spazio). Man mano che aumenti di scala (frequenza inferiore), puoi campionare meno spesso. La logica è che le basse frequenze non cambiano così rapidamente (pensate a un crash del piatto contro un basso elettrico - il crash del piatto ha transitori molto brevi, mentre il basso richiederebbe più tempo per cambiare). In effetti, alla scala più breve (supponendo che si campiona in tutte le posizioni di spostamento), si ha la rappresentazione completa di un segnale (è possibile ricostruirlo usando solo i coefficienti su questa scala). Non sono così sicuro della logica del campionamento della scala. IO' ho visto questo suggerito come logaritmico, con (penso) una spaziatura più stretta tra scale più brevi. Penso che ciò sia dovuto al fatto che le wavelet su scale più lunghe hanno una trasformata di Fourier più ampia (quindi "raccolgono" più frequenze).

Ammetto di non comprendere appieno l'FWT. La mia impressione è che si tratti effettivamente del campionamento minimo in shift / scale e non sia una rappresentazione ridondante. Ma poi penso che perdi la capacità di analizzare (e pasticciare) un segnale in breve tempo senza introdurre artefatti indesiderati. Leggerò di più al riguardo e, se apprenderò qualcosa di utile, riferirò. Spero che altri vorranno commentare.


1
"è in realtà il campionamento minimo in shift / scale e non è una rappresentazione ridondante." Ah! Penso che tu abbia ragione, e questo spiegherebbe perché è sempre paragonato alla FFT, che è anche una rappresentazione minima.
endolith,

3
L'FWT è un campionamento critico del CWT. Sto ancora cercando di capirlo meglio, ma ho imparato che STFT e CWT sono entrambi frame. La teoria dei frame mi sta superando, ma una nozione interessante è la formula dell'incertezza, che per la STFT, dw * dt> C (dw è la risoluzione in frequenza e dt è la risoluzione temporale). In altre parole, mentre provi a risolvere meglio la frequenza, perdi la risoluzione temporale. Il CWT non ha questa limitazione. Continuerò a leggere e cercherò di chiarire la mia risposta sopra una volta chiarita nella mia testa.

1
Da quanto ho capito, CWT ha la stessa limitazione, ma utilizza un migliore compromesso.
endolith,

1
"STFT sono entrambe analisi ridondanti di un segnale". Non penso sia vero. Se si dispone di un segnale a 100 punti, dividerlo in blocchi di 10 punti, quindi eseguire un FFT a 10 punti su ciascuno di essi, le stesse informazioni verranno comunque memorizzate nella stessa quantità di campioni.
Endolith,

11

Considera il caso wavelet di Haar. La trasformazione Wavelet veloce suddivide ricorsivamente il segnale e calcola la somma e la differenza delle due metà ogni volta. La differenza è l'entità della trasformazione per il wavelet corrente e la somma viene restituita per il chiamante per calcolare l'entità del trasformato per un wavelet dilatato con metà della frequenza. Pertanto, l'FWT copre il piano frequenza-tempo usando il modello descritto nel diagramma che hai dato.

Nota che il diagramma che hai dato è un po 'fuorviante. Quello che stanno davvero cercando di dirti è che ottieni un campione alla frequenza più bassa, due campioni alla frequenza doppia, quattro campioni alla frequenza quadrupla e così via. Le proprietà tempo-frequenza di ogni wavelet non sono tali da coprire la loro piastrella. In pratica, ogni wavelet coprirà un'area infinita perché hanno un supporto compatto e, pertanto, devono essere completamente delocalizzati in termini di frequenza. Quindi dovresti solo pensare ai centri di quelle tessere.

Inoltre, la FWT richiede una wavelet discreta che deve aderire a un criterio di ammissibilità molto più restrittivo rispetto alle wavelet continue per la CWT. Di conseguenza, le proprietà tempo-frequenza delle wavelet discrete sono generalmente terribili (ad esempio le wavelet Daubechies sono piene di funzioni nitide o hanno frequenza variabile) e l'utilità del piano frequenza-tempo è notevolmente diminuita nel contesto della FWT. Tuttavia, le wavelet continue vengono utilizzate per calcolare rappresentazioni tempo-frequenza dei segnali.


Sì, capisco la localizzazione dei coefficienti. È lo stesso della FFT. Quando dici "devi aderire", cosa intendi? È solo un requisito se stai cercando di ottenere una rappresentazione minima / non ridondante del segnale? Cosa succede se stai solo cercando di analizzarlo / visualizzarlo? Aggiungerò un esempio più concreto alla domanda.
endolith

1
Il rispetto del criterio di ammissibilità garantisce l'esistenza di una risoluzione dell'identità, vale a dire che tutti i segnali possono essere recuperati dalle loro trasformazioni wavelet. Se non ti aderisci, non puoi recuperare un segnale dalla sua trasformazione, a quel punto devi mettere in discussione che cosa stai analizzando esattamente (riflette anche qualsiasi informazione contenuta nel segnale ?!). Se non si richiede una rappresentazione minima / non ridondante, è possibile utilizzare il criterio di ammissibilità più lassista del CWT (che consente di definire wavelet più "ideali").

1
Penso che troverai la mia tesi di dottorato davvero utile. Lo metterò online per te ...

L'hai messo online? :)
endolith,


3

Il tuo riferimento lo ha:

Una sequenza di coefficienti basata su una base ortogonale di piccole onde finite o wavelet.

Per di più, potrebbe piacerti la pagina DWT . Lì introduce le wavelet Haar, le wavelet Daubechies e altre. Indica come

  • Le wavelet hanno una posizione: la wavelet (1,1, -1, -1) corrisponde al "lato sinistro" rispetto al "lato destro", mentre le ultime due wavelet hanno il supporto sul lato sinistro o sul lato destro, e una è una traduzione dell'altro.
  • Le onde sinusoidali non hanno posizione - si diffondono in tutto lo spazio - ma hanno una fase - la seconda e la terza onda sono traslazioni l'una dell'altra, corrispondenti a 90 ° sfasate, come il coseno e il seno, di cui si tratta di versioni discrete .

Se, invece di wavelet discrete, desideri ora delle wavelet continue o delle wavelet complesse, potresti iniziare con le serie wavelet .

Oltre a Wikipedia, un libro di testo e un corso potrebbero farti bene.


Non capisco questa risposta. Risponde alle mie domande? Lato sinistro e lato destro di cosa? Cosa c'entra questo con la rappresentazione della frequenza temporale?
endolith,

La descrizione "lato sinistro contro lato destro" è un'anteprima estratta della pagina DWT, che mostra che quella pagina include un semplice esempio per spiegare i meriti relativi della base sinusoidale e della base delle onde di Haar. Stavi chiedendo della natura dei coefficienti in una trasformata wavelet. Sembrava che stavi cercando intuizione. Ho pensato che potresti trovare utile quell'esempio (nel suo contesto originale).

Sì, ho letto gli articoli di Wikipedia più volte prima di pubblicare questa domanda. Non so se / cosa abbia a che fare la tua risposta con la mia domanda sulla rappresentazione della frequenza temporale. In tal caso, potresti collegare i punti? Un FFT di n campioni produrrà n coefficienti, che costituiscono una singola colonna dello spettrogramma STFT. Esiste una relazione corrispondente tra i coefficienti prodotti dal WT e lo scalogramma? Se è così, che cosa è? Quali delle caselle nel grafico in basso a destra sono compilate da una singola corsa attraverso la FWT?
endolith,

1
Quasi tutto nelle pagine di Wikipedia relative alle wavelet è attualmente sbagliato.

3

O(N2)

O(N)O(Nlog(N))O()

Inizia dalla generica finestra STFT (modulo continuo). Se si collega una finestra infinita dell'altezza dell'unità, si recupera la trasformata di Fourier come un caso speciale. Che puoi discretizzare (e ottenere il DFT) e renderlo veloce (e ottenere il FFT).

Inizia da un CWT (modulo continuo). Il CWT continuo ammette un'incredibile quantità di potenziali forme wavelet. Possono essere discretizzati esattamente solo con modelli di campionamento (in tempo o scala) che rispettano alcune disuguaglianze di "Heisenberg": un campione per unità di superficie. Questi schemi dipendono dal wavelet. Nella maggior parte dei casi, i pattern creano un CWT discretizzato ridondante e producono un frame wavelet.

Alcuni lo volevano non ridondante, con una scala diadica (DWT). Solo pochissime wavelet (ancora un numero infinito, ma non le trovi per caso) lo consentono. Tra i primi c'erano le onde Haar, Franklin e Meyer. Se poi imponi che il supporto wavelet sia finito, allora Haar è stato l'unico a lungo. È quasi impossibile ottenere una wavelet ortogonale da "wavelet continue naturali", ecco perché sono state costruite quelle di Daubechies e successivamente Symmlets and Coiflets . Quelle wavelet di forma strana non hanno formule piacevoli e semplici come le wavlet Morlet.

O(N)

In effetti, il FWT è solo un campionamento discreto del CWT

DWT (o FWT) è esatto, come il DFT / FFT. La maggior parte degli altri CWT discretizzati (con qualsiasi wavelet) lo sono approssimativamente (senza molto danno se si dispone di ridondanza sufficiente).

Così:

  • kkk804T2×424[ω/2,ω]42×22[ω/8,ω/4][1,1,2,4]
  • k
  • +×O(N)

Le seguenti immagini mostrano come una versione continua dell'onda Haar wavelet continuo di Haar

può essere campionato in un'onda ortogonale discreta: wavelet di Haar critico discreto

Si noti che alcune wavelet discrete, in particolare quelle lunghe (come le spline), a volte vengono calcolate utilizzando una FFT :)

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.