How to plot spectrogram with actual time?

20 visualizaciones (últimos 30 días)
Niklas Kurz
Niklas Kurz el 19 de En. de 2021
Editada: Niklas Kurz el 19 de En. de 2021
I've tried a plenty of time now, awaring that there are many solution on the web, but none of them were working fine for my Issue.
Say I have the data
[y,fs] = audioread('path');
In order to prepare it for spectrogram:
y = y(:,1);
If I plot it now in a spectogram with same setting as on the Matlab-side:
spectrogram(y,128,120,128,1e3,'yaxis')
I'm getting a time-span of hours, even if the Signal is 140 seconds long.
Any solutions? The spectogram looks fancy, but not in that scale.

Respuestas (1)

Niklas Kurz
Niklas Kurz el 19 de En. de 2021
Editada: Niklas Kurz el 19 de En. de 2021
gosh,
spectrogram(y,128,120,128,fs,'yaxis')
% colormap(jet); (optional optic)
if your Data is really large and scaled in minutes you can use:
[~,F,T,P] = spectrogram(y,128,120,128,fs,'yaxis');
imagesc(T, F, 10*log10(P+eps)) % add eps like pspectrogram does
axis xy
ylabel('Frequency (Hz)')
xlabel('Time (s)')
h = colorbar;
h.Label.String = 'Power/frequency (dB/Hz)';
According to Stack exchange. Thank you documentations!

Categorías

Más información sobre Signal Processing Toolbox en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by