Estoy ejecutando la transformación de wavelet continua de Morlet. Tengo wscalogram
señal y ahora quiero trazar una magnitud de frecuencia como la siguiente imagen, pero no sé cómo hacerlo:
He usado la scal2freq
función MATLAB para convertir escalas a pseudo frecuencias. También tengo algunas frecuencias en mi señal que tienen una gran relación de amortiguamiento (4%), por lo que no son bien visibles en la trama. ¿Cómo puedo exagerar estos modos altamente amortiguados?
Estoy usando MATLAB, aquí están mis códigos:
% Import the text4.txt to matlab workspace. and save it under name "data"
t=linspace(0,30,301);
Fs=ceil(inv(t(2)-t(1)));
x=data(:,4); % use x=data(:,3),x=data(:,5) too. first column is time,second is refrence
wname = 'morl';
scales = 1:1:256;
coefs = cwt(x,scales,wname,'lvlabs');
freq = scal2frq(scales,wname,1/Fs);
surf(t,freq,abs(coefs));shading('interp');
axis tight; xlabel('Seconds'); ylabel('Pseudo-Frequency (Hz)');
axis([0 30 0 1 0 60])
xlabel('Time'); ylabel('Frequency');
figure;
sc=wscalogram('image',coefs,'scales',freq,'ydata',x);
hold on
Mi trama actual se ve así:
frequency-spectrum
frequency
wavelet
Hombre eléctrico
fuente
fuente
Respuestas:
Modificando un poco su código, pero sin cambios importantes, y obtengo resultados correctos de cualquier manera. Use este código de plantilla aquí, y no debería ver ningún problema. Obtengo los resultados correctos.
Para obtener la figura en el lado derecho de la primera imagen que colocas, eso es simplemente el espectro de segmento de tiempo. En otras palabras, una columna de su matriz de frecuencia-tiempo.
Por ejemplo, podríamos obtener la siguiente matriz de coeficientes cuadrados, en frecuencia vs. tiempo:
Supongamos entonces que deseamos observar el espectro para el segmento de tiempo en la columna 47. Luego, esto se da aquí:
Aquí, verá la potencia de los coeficientes, frente a la frecuencia, para el segmento de tiempo correspondiente a la columna 47.
fuente
La transformación de wavelet continua (CWT) es un método para el análisis de escala de tiempo . Sí, lo has leído correctamente, escala , no frecuencia . Sin embargo, es posible asignar las escalas a frecuencias, e incluso con bastante facilidad. Como usted es un usuario de MATLAB, probablemente desee usar esta función , que hace lo siguiente:
Como puede leer, las frecuencias no son las frecuencias reales en la señal, sino aproximaciones. Si desea las frecuencias reales, debe utilizar la transformada de Fourier de corto tiempo (STFT).
Entonces, ¿cuándo se debe usar el CWT? Como principio general, las wavelets funcionan bien cuando las señales son transitorias (es decir, tienen cambios rápidos).
EDITAR: jaja, no sé lo que estoy haciendo aquí. lo siento: perdí completamente el punto de tu pregunta. Acabo de leer el título ...
fuente
No estoy seguro si aún necesita ayuda ...
Si desea frecuencia vs. magnitud, use un comando "mesh / surf" para trazar los coeficientes.
Luego cambie la orientación de la trama para que tenga el resultado que busca. Para esto vea el comando "ver".
fuente