我如何获得定义频带中的所有 fft bin 数量?
Posted
技术标签:
【中文标题】我如何获得定义频带中的所有 fft bin 数量?【英文标题】:How do i get all the numbers of fft bins in a defined frequency band? 【发布时间】:2016-12-20 10:43:28 【问题描述】:我使用 matlab 软件。对于我的问题。
我有一个音频信号,我在其上应用 STFT。我截一段
(46 ms, specifially chosen)
超出我的信号 y(audio signal)
并在其上使用 FFT
。然后我进入下一段,直到我的音频信号结束。
我的 WAV 文件长 10.8526 秒。如果我的采样频率为
44100Hz,这意味着我的y
是10.8526*fs = 478599.66
这是
在工作区中显示为478 6000 x2 double
。
我的fft
的长度是2048
。我的信号在较低频段[0 300]
、mfb [301 5000]
和hfb [5001 22050(fs/2)]
下是有区别的。
乐队只是一个例子,而不是实际的matlab
代码。 Basicall
我想要(或我想要做的)是在定义的频带中获取我的 bin 的值并对其进行算术平均值。
我选择 46 毫秒是因为,我希望它与 fft
一样长,或者几乎与 fft
一样长。 (It is not exact).Afterwards
,我想尝试绘制它,但这并不重要。任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:在一个大小为 n 的向量中对时域信号进行傅里叶变换将返回另一个大小为 n 的相同信号但在频域中的向量。
频域将从 0(直流偏移)到您的采样频率。但是你只能使用其中的一半。后半部分将具有相同的值但已镜像。
您可以通过以下方式获得每个有用 bin 的中心频率:
f = Fs*(0:(n/2))/n;
【讨论】:
首先,感谢您的回答。我不太确定变量“n”代表什么?我知道,fft 是如何工作的,但我会尝试解决这个问题。不幸的是,我对 matlab 编程的知识有限 "n" 是你的 fft 的长度。在你的情况下 2048以上是关于我如何获得定义频带中的所有 fft bin 数量?的主要内容,如果未能解决你的问题,请参考以下文章
通过 C 中的 FFT 将 1000Hz 噪声添加到 wav 文件