Lendo o gráfico de transformação Wavelet

15

Estou tendo problemas para entender como ler o gráfico plotado por uma transformação wavelet,

aqui está o meu código simples do Matlab,

load noissin;
% c is a 48-by-1000 matrix, each row 
% of which corresponds to a single scale.
c = cwt(noissin,1:48,'db4','plot');

insira a descrição da imagem aqui

Portanto, a parte mais brilhante significa que o tamanho do coffiecient de escala é maior, mas como exatamente eu posso entender esse gráfico o que está acontecendo lá? Por favor me ajude.

Sufiyan Ghori
fonte
Eu tentei o seguinte código no matlab t = 0: 0,001: 2; y = sin (2 * pi * 20 * t) wname = 'cmor0,5-1' escala = 1: 0,1: 80; cwt (y, escala, wname, 'plot'); eu tenho o seguinte enredo! insira a descrição da imagem aqui partes reais e imaginárias mostrando as lacunas observadas no CWT com a morl wavelet. Portanto, de certa forma, o CWT com wavelet morlet complexo também contém informações de fase. Como explicar isso?

Respostas:

15

Imagine por um segundo que você acabou de desenhar sua wavelet daubechies-4 , como você pode ver aqui em vermelho.

insira a descrição da imagem aqui

Agora imagine que você pega essa forma de onda em vermelho e simplesmente faz uma correlação cruzada com o seu sinal. Você traça esse resultado. Essa será a primeira linha do seu gráfico. Essa é a escala 1. Em seguida, você dilata sua wavelet Daubechies-4 (ou seja, você simplesmente faz com que ela seja esticada no tempo, por algum fator). Então, você novamente faz uma correlação cruzada dessa nova forma de onda com o seu sinal. Você então recebe a linha dois do seu enredo. Essa é a escala 2. Você continua fazendo isso para todas as escalas, o que significa que continua pegando a wavelet original da 'mãe' e continua dilatando, correlacionando, dilatando e correlacionando, etc. outras.

É isso que a plotagem do CWT está mostrando a você. Os resultados da execução de uma correlação cruzada do seu sinal com uma wavelet em escalas diferentes, ou seja, em diferentes fatores de dilatação (alongamento).

Então, vamos interpretar sua imagem. Na primeira linha, você pode ver que possui amplitudes fracas em sua correlação cruzada. Isso significa que está dizendo a você que quase nada no seu sinal se correlaciona (ou 'corresponde') à sua wavelet, quando está na escala 1, (quando está na menor escala). Você continua esticando sua wavelet e se correlacionando, e ainda assim não está combinando nada no seu sinal, até chegar, digamos, na escala 31. Então, quando você estica sua wavelet 31 vezes e realiza uma correlação cruzada, começa a ver alguns pontos positivos, o que significa que está obtendo boas pontuações de correlação cruzada entre a wavelet esticada e o sinal.

No entanto, se você olhar para o topo, temos os pontos mais brilhantes. Então, para a escala 46, você criou essa linha esticando sua wavelet original 46 vezes e depois a correlacionou com seu sinal, e essa é a sua linha 46. Então você vê muitos bons pontos positivos. Você pode ver que nas posições (eixo x) ~ 25, ~ 190 e ~ 610, tenho pontos brilhantes. Isso significa que você tem algum recurso em seu sinal, que se aproxima muito da sua wavelet que é esticada 46 vezes . Então você tem 'algo' nesses locais que se aproximam da sua wavelet nessa escala.

(É claro que, no seu caso, você usou ruído, as posições das quais falei são aleatórias - ou seja, não há nada realmente "interessante" em andamento. Faça um CWT com pulso senoidal e o que estou dizendo pode fique mais claro para você.)

Em resumo, o CWT está simplesmente mostrando todas as pontuações possíveis de correlação entre o modelo / filtro correspondente (neste caso, daub-4 wavelet), em diferentes posições (eixo x), também em diferentes fatores esticados (eixo y) .

Espero que isso tenha ajudado.

Spacey
fonte
Muito obrigado, isso realmente ajudou, mas como você poderia dizer que descobri a frequência e o tempo do meu sinal por esse processo?
Sufiyan Ghori
11
@Effected Você encontrou o 'tempo' de ocorrência de algum recurso em seu sinal, pelo qual obtém as pontuações máximas de correlação. (Exemplo, ~ 25, ~ 190, ~ 610) no seu exemplo. Para obter o conteúdo de frequência do seu sinal nesse ponto, basta olhar para a FFT daquela parte do sinal OU, para a FFT da sua wavelet nessa escala e para a resposta em frequência.
Spacey
Então, supomos fazer o DCT após a wavelet para ter componentes de tempo e frequência? Se eu tenho uma onda senoidal (eixo x = tempo, eixo y = amplitude) e se eu pegar sua FFT, tenho componentes de frequência dos componentes fft e tempo do sinal original, por que devemos usar a wavelet?
Sufiyan Ghori
11
@Efeito O motivo pelo qual você usa DFT / DCT é obter conteúdo de frequência global . DFT / DCT informa o conteúdo da sua frequência para todo o sinal. Onde está uma frequência específica no tempo? Você não sabe. No entanto, se você usar wavelets, poderá descobrir não apenas qual é a sua frequência (semelhante ao DFT / DCT), mas também onde você tem essa frequência. (Localização no tempo).
Spacey
Para o registro, a frequência existe apenas como um conceito global. Assim que você começa a tentar limitar a frequência para um período de tempo, você está realmente falando sobre distribuições de frequência. A distribuição diminui à medida que o intervalo de tempo ou a escala aumenta. Computar o DFT de wavelets de diferentes escalas fornecerá uma idéia de como interpretar os resultados da transformação associada de volta ao domínio da frequência; pense filtro passa-banda. A wavelet de Morlet possui uma distribuição de frequência bem gaussiana que é adequada para se relacionar com os conceitos de Fourier. @endolith tocou nisso em sua resposta.
user2718
11

Essas parcelas foram úteis para eu entender, provenientes de um histórico do STFT :

A complexa wavelet de Morlet (sinusoidal) se parece e se comporta como o núcleo complexo de um STFT (uma vez que é derivado da transformação Gabor , um tipo de STFT). Quando você "desliza" um sinal da mesma frequência, ele corresponde, independentemente da fase do sinal que você está medindo, produzindo uma magnitude e uma medição de fase em cada ponto (e este é apenas um gráfico da magnitude):

Magnitude da transformada complexa de wavelets de Morlet

Gráfico de magnitude da transformada complexa de wavelets de Morlet

A wavelet de Morlet com valor real corresponde apenas quando as fases da wavelet e o sinal estão alinhados. Assim, quando você passa o sinal que está sendo medido, ele entra e sai de fase, produzindo máximos e mínimos à medida que eles cancelam ou reforçam:

Magnitude da transformada real contínua de wavelets de Morlet

Magnitude da transformada real contínua de wavelets de Morlet

(Na verdade, nesse caso, estamos plotando a magnitude, para que correspondências positivas e negativas produzam pontos laranja. É melhor mudar para um mapa de cores bipolar , para mostrar que alguns picos estão em fase e outros estão fora de fase) :

Transformada de onda Morlet real contínua usando mapa de cores bipolar

Transformada de onda Morlet real contínua usando mapa de cores bipolar

Com o Morlet com valor real, as informações de magnitude e fase são combinadas em um único valor de saída.

As wavelets mais comumente usadas são de valor real, portanto, apenas se combinam quando a onda que você está medindo e a onda que você está testando estão alinhadas, levando a essas oscilações ou ondulações no escalograma à medida que você desliza uma após a outra.

endólito
fonte
De onde você tirou esses enredos?
Spacey
@Mohammad: Oh, se você seguir os links Tenho mais informações sobre eles, mas em suma, eu os fiz com este código: phy.uct.ac.za/courses/python/examples/...
endolith
Fazer a ligação está morto, agora eles estão em github.com/emanuele/cwt ou gist.github.com/endolith/2783866
endolith
11
Muito agradável! Decidi aprender sobre wavelets, pesquisei no Google e, em cinco minutos, sou encaminhado de volta ao ecossistema de troca de pilhas para uma resposta bem escrita da classe "aha!". Este é um conjunto mínimo e bem escolhido de imagens. Obrigado!
uhoh
4

Este é o exemplo que eu acho que é o melhor para entender o enredo da Wavelet.

Dê uma olhada na imagem abaixo. A forma de onda (A) é o nosso sinal original; a forma de onda (B) mostra uma wavelet Daubechies 20 (Db20) com cerca de 1/8 segundo de comprimento que começa no início (t = 0) e termina efetivamente bem antes de 1/4 de segundo. Os valores zero são estendidos para 1 segundo completo. A comparação ponto a ponto * com o nosso sinal de pulso (A) será muito ruim e obteremos um valor de correlação muito pequeno.

primeiro deslocamos a wavelet básica ou mãe não esticada levemente para a direita e executamos outra comparação do sinal com essa nova forma de onda para obter outro valor de correlação. Continuamos a mudar e quando a wavelet Db20 está na posição mostrada em (C), obtemos uma comparação um pouco melhor do que com (B), mas ainda muito ruim porque (C) e (A) são frequências diferentes.

Depois de continuarmos deslocando a wavelet até o final do intervalo de 1 segundo, recomeçamos com uma wavelet levemente esticada no início e mudamos repetidamente para a direita para obter outro conjunto completo desses valores de correlação. A forma de onda (D) mostra a wavelet Db20 esticada para onde a frequência é aproximadamente a mesma do pulso (A) e deslocada para a direita até que os picos e vales se alinhem razoavelmente bem. Nessas quantidades particulares de deslocamento e alongamento, devemos obter uma comparação muito boa e um grande valor de correlação. Mudar ainda mais para a direita, no entanto, mesmo nesse mesmo alongamento, produzirá correlações cada vez mais fracas. Alongamentos adicionais não ajudam em nada, porque mesmo quando alinhados, o pulso e a wavelet sobrecarregada não terão a mesma frequência.

insira a descrição da imagem aqui

No CWT, temos um valor de correlação para cada turno de cada wavelet estendida. † Para mostrar os valores de correlação (qualidade da “correspondência”) para todos esses trechos e turnos, usamos uma exibição em 3-D.

Aqui vai,

insira a descrição da imagem aqui

Os pontos brilhantes indicam onde os picos e vales da wavelet esticada e deslocada se alinham melhor com os picos e vales do pulso incorporado (escuro quando não há alinhamento, mais escuro onde apenas alguns picos e vales se alinham, mas mais brilhantes onde todos os picos e vales alinhar). Neste exemplo simples, esticar a wavelet por um fator de 2 de 40 a 20 Hz (esticar o filtro dos 20 pontos originais para 40 pontos) e deslocá-lo 3/8 segundo no tempo deu a melhor correlação e concorda com o que sabíamos a priori ou "na frente" sobre o pulso (pulso centrado em 3/8 segundos, frequência de pulso 20 Hz).

Escolhemos a wavelet Db20 porque ela se parece um pouco com o sinal de pulso. Se não soubéssemos a priori como era o evento, poderíamos tentar várias wavelets (com facilidade trocadas de software) para ver qual produzia uma tela CWT com os pontos mais brilhantes (indicando a melhor correlação). Isso nos diria algo sobre a forma do evento.

Para o exemplo simples de tutorial acima, poderíamos discernir visualmente a localização e a frequência do pulso (A). O próximo exemplo é um pouco mais representativo de wavelets no mundo real, onde localização e frequência não são visíveis a olho nu.

Veja o exemplo abaixo,

insira a descrição da imagem aqui

Wavelets podem ser usadas para analisar eventos locais. Construímos um sinal de onda senoidal com variação lenta de 300 pontos e adicionamos uma pequena “falha” ou descontinuidade (em declive) no tempo = 180. Não notaríamos a falha a menos que estivéssemos olhando para o close (b).

Agora vamos ver como a FFT exibirá essa falha, dê uma olhada, insira a descrição da imagem aqui

A baixa frequência da onda senoidal é fácil de notar, mas a pequena falha não pode ser vista.

Mas se usarmos o CWT em vez do FFT, ele exibirá claramente essa falha, insira a descrição da imagem aqui

Como você pode ver, a exibição da wavelet do CWT mostra claramente uma linha vertical no tempo = 180 e em escalas baixas. (A wavelet tem muito pouco alongamento em escalas baixas, indicando que a falha foi muito curta.) O CWT também se compara bem à grande onda senoidal oscilante que oculta a falha. Nessas escalas mais altas, a wavelet foi esticada (para uma frequência mais baixa) e, assim, "encontra" o pico e o vale da onda senoidal no tempo = 75 e 225. Para essa curta descontinuidade, usamos um Db4 curto de 4 pontos wavelet (como mostrado) para melhor comparação.

Sufiyan Ghori
fonte