How can I force the time-axis unit of spectrogram to be 'second(s)' ?
18 ビュー (過去 30 日間)
表示 古いコメント
When I use the spectrogram function (https://www.mathworks.com/help/signal/ref/spectrogram.html) , I find that depends on the time duration of the y data, the time-axis units are dynamic, shifting between 'second(s)' and 'milisecond(s)'. So is it possible to force the unit to be 'second(s)'?
採用された回答
Adam Danz
2021 年 5 月 26 日
編集済み: Adam Danz
2021 年 5 月 27 日
I don't know whether there's an input to spectrogram that could solve this but here's how to fix the labels after the plots are created.
You could detect whether the x-axis is in seconds or ms by the xlabel;
if strcmpi(ax1.XLabel.String, 'Time (ms)')
ax1.XTickLabels = compose('%.1f',ax1.XTick/1000); % set tick labels
xlabel(ax1, 'Time (s)') % set axis label
end
P1=[10,-1];
fs = 32000;
y1 = wgn(1*fs,1,1);
y2 = wgn(2*fs,1,1);
figure;
ax1 = subplot(2,1,1); % get handle
spectrogram(y1,hamming(512),512-round(fs/1e3),512,fs,'yaxis');
subplot(2,1,2)
spectrogram(y2,hamming(512),512-round(fs/1e3),512,fs,'yaxis');
ax1.XTickLabels = compose('%.1f',ax1.XTick/1000); % set tick labels
xlabel(ax1, 'Time (s)') % set axis label
その他の回答 (0 件)
参考
カテゴリ
Find more on Axis Labels in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!