Meu conhecimento de wavelets é menor que epsilon. Tenha paciencia comigo. Se eu tenho um sinal de dois sinusóides bem separados (15 e 48 Hz) mais algum ruído aleatório, posso distinguir claramente os dois em um espectrograma (as duas faixas na minha foto);
t=0:0.002:1; % fs = 500 Hz
x=4*sin(2*pi*15*t)+2*cos(2*pi*48*t);
xn = x + randn(size(x));
figure(1);
plot(xn);
figure(2);
spectrogram(xn, 64, 60, [], 500);
mas, usando 'wscalogram', não posso dizer que posso diferenciar os componentes:
coefs = cwt(xn,1:64,'db8','scalCNT');
wscalogram('image',coefs,'scales',1:64,'ydata',xn);
Existe uma maneira de ler no escalograma que existem 2 sinusóides distintos e, se houver, como separá-los usando a decomposição e a filtragem de wavelets? Eu pensei que talvez minha escolha de wavelet ('db8') não seja ideal, mas não vejo muita diferença usando outros tipos e escalas de número maior (ou menor). Claramente, estou perdendo algo sobre onde, quando e sobre o que aplicar wavelets.
obrigado
wavelet
spectrogram
filtering
user1641496
fonte
fonte
Respostas:
Wavelets são ideais para eventos localizados. A Transformada de Fourier representa uma função como uma soma de senos e cossenos, nenhum dos quais está localizado. O espectrograma mantém algumas informações de tempo, às custas da resolução de frequência
No seu caso, o sinal não está localizado. O espectrograma mancha sua banda de 15 Hz por vários Hz, pois captura algumas informações de tempo, e o escalograma se esgota.
fonte
Sim, você está perdendo alguma coisa :) Embora tenha tentado diferentes famílias de wavelets, você deve usar o
GaborWavelet
. Eu escrevi issoMathematica
, mas você pode fazê-lo em qualquer ambiente que desejar.fonte
GaborWavelet
deve ser explicada aqui.