自定义MATLAB频谱图功能的输出

时间:2017-01-08 18:21:51

标签: matlab matlab-figure spectrogram

我想知道是否可以自定义MATLAB的spectrogram函数生成的图,其x轴不代表时间,而是另一个物理信号{{1与输入信号y2同时捕获(用于计算频谱图)。因此,可以假设y1y1具有与x轴相同的时间戳,如下例所示。

y2

1 个答案:

答案 0 :(得分:0)

要任意控制轴的比例,您可以使用imagesc手动绘制频谱图。方法如下:

N = 1024;
n = 0:N-1;
w0 = 2*pi/10;
y1 = sin(w0*n);
y2 = n;

% compute spectrogram
[s,w,t]=spectrogram(y1,'yaxis');

% find values in y2 corresponding to spectrogram time-grid
t2 = interp1((1:N), y2, t);

% use imagesc to plot spectrogram
figure;
imagesc(t2,w/pi,10*log10(abs(s.^2)/length(w)/pi))
set(gca,'YDir','normal');
colorbar;
ylabel('Normalized Frequency (\times \pi rad/sample)');
% caxis([-160, 20]) % manually tweak the color range for best detail

请注意,我对您的代码进行了两处小修改:

  1. w02*pi更改为2*pi/10,因为前者导致y1全部为零。
  2. y2更改为1:N以外的其他内容,即默认的频谱图。
  3. 我还应该指出,内置的spectrogram图可以让你以各种方式控制轴刻度,包括指定sample rate