Mi conocimiento de wavelets es menor que épsilon. Tengan paciencia conmigo. Si tengo una señal de dos sinusoides bien separados (15 y 48 Hz) más algo de ruido aleatorio, puedo distinguir claramente los dos en un espectrograma (las dos franjas en mi imagen);
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);
pero, usando 'wscalogram', no puedo decir que puedo distinguir los componentes:
coefs = cwt(xn,1:64,'db8','scalCNT');
wscalogram('image',coefs,'scales',1:64,'ydata',xn);
¿Hay alguna manera de leer del escalograma que hay 2 sinusoides distintos y, de ser así, cómo puedo separarlos usando la descomposición y el filtrado de wavelets? Pensé que quizás mi elección de wavelet ('db8') no es óptima, pero no puedo ver mucha diferencia usando otros tipos y un mayor número (o menor) de escalas. Claramente, me falta algo sobre dónde y cuándo y sobre qué aplicar wavelets.
Gracias
wavelet
spectrogram
filtering
usuario1641496
fuente
fuente
Respuestas:
Las wavelets son ideales para eventos localizados. La Transformada de Fourier representa una función como una suma de senos y cosenos, ninguno de los cuales está localizado. El espectrograma guarda cierta información de tiempo, a expensas de la resolución de frecuencia
En su caso, la señal no está localizada en absoluto. El espectrograma difumina su banda de 15 Hz en varios Hz, ya que captura cierta información de tiempo y el escalograma falla completamente.
fuente
Sí, te falta algo :) Aunque has probado diferentes familias de wavelets, deberías usar el
GaborWavelet
. Escribí esto enMathematica
, pero puedes hacerlo en cualquier entorno que desees.fuente
GaborWavelet
debe explicarse aquí.