1

我创建了一个 matlab gui,并在其中包含一些带有一些轴的元素。我在 ploter1 (第一轴)中绘制了我的一个愿望图,使用

plot(handles.ploter1,xx); title(handles.ploter1,'Waveform');

没关系,但是我想使用specgram并将specgram结果绘制在另一个轴上,我不知道该怎么做:(
我测试

specgram(wav,N,fs,hamming(N/4),round(0.9*N/4));xlabel('time, s');

或者

specgram(handles.ploter2,wav,N,fs,hamming(N/4),round(0.9*N/4));xlabel('time, s');

但返回错误或什么都没有! 在此处输入图像描述

请帮我。非常感谢你

4

1 回答 1

3

编辑

正如 bdecaf 的评论中提到的,应该做的是设置当前轴:

axes(handles.ploter2);

现在,当使用时

spectrogram(x,window,noverlap,F)]

绘图应该在指定的轴上。如果没有,请尝试:

hold on

前!

老的

specgram 或 spectogram 没有绘图的参数。您必须稍后定义它。

我建议首先通过以下方式获得结果:

[S,F,T]=spectrogram(x,window,noverlap,F)]

然后将其绘制在特定轴上:

plot(handles.ploter2, S,F)

但我不确定您要绘制哪个参数。请查看文档。

从文档:

[S,F,T] = spectrogram(...) 返回计算频谱图的频率向量 F 和时间向量 T。F 的长度等于 S 的行数。T 的长度为 k(如上定义),T 中的值对应于每个段的中心。

[S,F,T] = spectrogram(x,window,noverlap,F) 使用频率向量 F,以 Hz 为单位。F 必须是至少包含两个元素的向量。这种情况下使用 Goertzel 算法计算 F 中频率的频谱图。指定的频率四舍五入到与信号分辨率相称的最接近的 DFT bin。在使用 nfft 或 nfft 的默认值的所有其他语法情况下,使用短时傅立叶变换。返回的 F 向量是舍入频率的向量。T 是计算频谱图的时间向量。F 的长度等于 S 的行数。 T 的长度等于 k,如上定义,每个值对应于每个段的中心。

[S,F,T] = spectrogram(x,window,noverlap,F,fs) 如上所述使用频率向量 F,以 Hz 为单位,并使用以 Hz 为单位的 fs 采样频率。如果 fs 指定为空 [],则默认为 1 Hz。

于 2013-10-01T09:00:01.077 回答