How to plot spectrogram with actual time?

22 次查看(过去 30 天)
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.

回答(1 个)

Niklas Kurz
Niklas Kurz 2021-1-19
编辑:Niklas Kurz 2021-1-19
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!

类别

Help CenterFile Exchange 中查找有关 Time-Frequency Analysis 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by