【问题标题】:Why are these two plots different?为什么这两个情节不同?
【发布时间】:2015-12-21 12:47:46
【问题描述】:

在这里,我绘制了两次频谱图,一次使用 imagesc,一次使用频谱图自动绘图。我不知道为什么会得到不同的缩放结果,可能是通过自动绘图功能进行了一些过滤,但我想知道究竟是什么以及如何对其进行转换以使其匹配。

fs = 44100;

% Frequency sweep signal
sw = logspace(log10(500),log10(5000),fs*5);

x = 0.95 * sin(cumsum((2*pi*sw)/fs));

N = 128;
win_size = N;
noverlap = N/2;
win = window(@blackman,win_size);

[s,f,t] = spectrogram(x,win,noverlap,N,fs,'yaxis');

%% IMAGESC --- FIGURE 1
figure(1)
imagesc(t,f/1000,20*log(abs(s)));
title('Spectrogram');
set(gca,'Ydir','Normal');
xlabel('Time (secs)');
ylabel('Frequency (kHz)');
hcb=colorbar;
title(hcb,'Spectral Magnitude (dB)');

%% test with automatic spectrogram plot ---FIGURE2
figure(2)
spectrogram(x,win,noverlap,N,fs,'yaxis');

end

感谢您的帮助:)

【问题讨论】:

    标签: matlab plot signal-processing spectrogram


    【解决方案1】:

    将代码“imagesc(t,f/1000,20*log(abs(s)))”更改为 imagesc(t,f/1000,20*log10(abs(s)))。 log() 是自然对数。 计算 dB 标度时,应使用 log10(),而不是 log()。

    【讨论】:

      猜你喜欢
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 2020-03-13
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      相关资源
      最近更新 更多