我正在根据麦克风输入计算 FFT。我注意到低频似乎总是比高频具有更大的功率(更高的 dB)。
- 我将数据切割成 24576 字节(4096*6)的帧。
- 应用汉明窗:
input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
- 通过 FFTW 运行它
Process1D()
。 - 从复数转换:
output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
- 平均 6 个值以获得 4096 字节的完整 FFT。
- 绘制漂亮的图片(颜色映射到调色板)。
进行平均 (pt. 5) 是为了降低 FFT 噪声。
如图所示,在声音和麦克风关闭的情况下,较低频率的能量(和噪音)更多。这表明它不仅仅是麦克风/子问题。
我的问题:
1. 这是预期的吗?为什么?
2.解决这个问题的任何标准方法?几乎看起来像一些 Math.Tan() 魔法可以将它提升到它所属的位置。
我的目标是能够识别前 5 个频率,而不会默认赢得较低的频率。