在我的 wav 文件(音乐)上,我做了一个短时傅里叶变换 (STFT)。我有频谱,范围从到。我取出了到之间的范围,我将其划分为频段。我的 STFT 每执行一次,因此我可以看到随时间的变化。
在这一点上,我不太确定,我是对还是错。获得一次频段的整体性能。这意味着,我值,因为我有频带。
我想我需要计算我的频段的 bin 来做到这一点。任何的想法?顺便说一句,我的代码在 MATLAB 中。
我懂了。在我的代码中,我做了一个完整的 stft,为此我定义了一个频率向量。它看起来像这样:
f=0:1:fftlen-1;
f=f/(fftlen-1)*fs;
fftlen 是4096, fs 是44100。我已经这样写了,我取出0-1000Hz并将其划分为 3 个频段,例如
lowband=(1:200);
然后为我的低频段定义一个频率向量,否则它不会起作用。(也许还有另一个更简单的解决方案......)它看起来像这样:
fL = 1:1:200;
我不确定我是否能看到这背后的联系,但fs/fftlen = 10.76660156 ...。这一定意味着第 19 个 bin大约是204.56...,这接近于我的低频段的预定义频率矢量(200Hz)。我通过执行200/(44100/4096)得到这个值,即18.5759 ..通过四舍五入,第 19 个 bin。之后我将19 乘以 10.7666...,即204.56..
如果我是对的,那么我将简单地将所有值从第一个 bin 带到第 18 个 bin。并对其进行算术平均。那么我的计算是否正确?