我对信号处理很陌生,所以请原谅我,如果我吵了一下。我已下载并安装了适用于Windows的FFTW。文档还可以,但我仍然有疑问。
我的总体目标是从计算机上的声卡中捕获以44100采样/秒采样的原始音频数据(此任务已使用库和我的代码实现),然后对此音频数据块执行DFT。
我只对在音频中找到一系列频率成分感兴趣,而且我不会执行任何逆DFT。在这种情况下,所有必要的是真实到真实的转换,因此 a b c
abc 0 1 0
def 0 0 1
ghi 0.33 0.33 0.33
jkl 1 0 0
函数?
我要转换的数据块长度为11025个样本。我的函数调用如下所示。这将产生11025个频段的频谱阵列。我如何知道结果中的最大频率成分?
我相信bin间距是Fs / n,44100/11025,所以4.这是否意味着我将在阵列中将频谱从0 Hz一直升至44100Hz,步长为4或更高一半的奈奎斯特频率22200?
这对我来说是个问题,因为我只想搜索60Hz到3000Hz的频率。有没有办法限制变换范围?
我没有看到该函数的任何参数,或者可能还有其他方法?
非常感谢您提供任何帮助。
fftw_plan_r2r_1d()
答案 0 :(得分:2)
回答上述一些问题:
magnitude = sqrt(re*re + im*im)
)Fs / N = 44100 / 11025 = 4 Hz
,即每个出纸槽的宽度为4 Hz 0
到Fs / 2
附加说明:
fftw_execute
)fftwf_execute
而不是fftw_execute
,同样适用于计划创建等)StackOverflow上的一些有用的相关问题/答案:
您可能还想阅读更多类似的问题和答案 - 搜索fft和fftw代码。
另请注意,dsp.stackexchange.com是有关DSP 理论的问题的网站的首选网站,而非实际的特定编程问题。