我通过以下代码读取了一个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但没有得到合适的结果:(
答案 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
返回的采样频率相同。)