如何将2轴的刻度设置为彼此相同?

时间:2014-12-10 10:26:20

标签: matlab axis

我通过以下代码读取了一个wave文件:

[filename pathname]=uigetfile('*.wav', 'Select a wave file');
[y,fs,nbits]=wavread(fullfile(pathname, filename));

并通过以下代码绘制频谱图和波形:

axes(handles.axes1);
plot(y);

axes(handles.axes2);
spectrogram(y,str2double(get(handles.Frame,'String')), str2double(get(handles.Overlap,'String')),[], str2double(get(handles.Samplef ,'String'))*1000, 'yaxis');

但我在轴刻度上有很多不同之处!我希望两个图都有相同的X轴刻度(以秒或毫秒为单位),我该怎么做? 我做了xlim但没有得到合适的结果:(

1 个答案:

答案 0 :(得分:0)

执行plot(y)时,X轴不代表时间,而只代表每个数据点的索引

您必须构建一个合适的时间向量,并将其用作绘图的XData。

之类的东西
[y,fs,nbits]=wavread(fullfile(pathname, filename));
xtime = (0:numel(y)-1)/fs ; %// build a time vector according to sampling frequency

然后再说:

axes(handles.axes1);
plot( xtime , y ); %// plot 'y' versus TIME

现在两个图上的时间向量应该相似,而XLim应该可以正常工作。 (前提是您将正确的采样频率发送到频谱图。您似乎从文本框中读取它并将其乘以1000.确保频谱图命令接收的频率与wavread返回的采样频率相同。)