0

我有一个 wav 文件,我想获取文件的频率时间数组。为了得到,我在 matlab 中尝试了 STFT。

[s f t]= spectrogram(x,window,overlap,N,FS);
figure(1)
imagesc(t,f,log10(abs(s)));

[X,Y]=meshgrid(t,f);
Z=log10(abs(s));
mesh(X,Y,Z);

我得到了我想要的图像。但我不知道 {s,ft,X,Y 和 Z} 是什么意思。我需要什么来获得频率时间数组。

4

1 回答 1

0

来自 MATLAB 文档:

[S,F,T] = spectrogram(...) 返回计算频谱图的频率向量 F 和时间向量 T。

S、F 和 T 正是您所需要的。T 变量包含 wav 文件包含频率 F 和变量 S 中相应 STFT 的时间。在对数标度上(可以说是为了更好地了解频率内容),您可以计算Z=log10(abs(s));.

X 和 Y 用于创建网格图,但如果您想知道:它们包含矩阵形式的 T 和 F,T 位于 X 的每一行,F 位于 Y 的每一列。

于 2014-04-25T18:38:26.733 回答