Effacer les filtres
Effacer les filtres

How to plot spectrogram with actual time?

29 vues (au cours des 30 derniers jours)
Niklas Kurz
Niklas Kurz le 19 Jan 2021
Modifié(e) : Niklas Kurz le 19 Jan 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.
  1 commentaire
Niklas Kurz
Niklas Kurz le 19 Jan 2021
attached data. It's a compressed example

Connectez-vous pour commenter.

Réponses (1)

Niklas Kurz
Niklas Kurz le 19 Jan 2021
Modifié(e) : Niklas Kurz le 19 Jan 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!

Catégories

En savoir plus sur Time-Frequency Analysis dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by