我正在使用 vDSP 实现算法。
1) 取 FFT 2) 取绝对值平方的对数(可以用查找表完成) 3) 取另一个 FFT 4) 取绝对值
我不确定在对它运行 FFT 之前是否可以通过窗口函数抛出传入数据。
vDSP_fft_zrip(setupReal, &A, stride, log2n, direction);
那是我的 FFT 函数
我需要先通过 vDSP_hamm_window(...) 抛出数据吗?
我正在使用 vDSP 实现算法。
1) 取 FFT 2) 取绝对值平方的对数(可以用查找表完成) 3) 取另一个 FFT 4) 取绝对值
我不确定在对它运行 FFT 之前是否可以通过窗口函数抛出传入数据。
vDSP_fft_zrip(setupReal, &A, stride, log2n, direction);
那是我的 FFT 函数
我需要先通过 vDSP_hamm_window(...) 抛出数据吗?
iOS Accelerate 库函数 vDSP_fft_zrip() 不包括应用窗口函数(除非由于有限长度参数而计算隐含的矩形窗口)。
所以你需要先应用你选择的窗口函数(有很多不同的)。
听起来您正在做倒谱分析,是的,在第一次 FFT 之前确实需要一个窗口函数。我会建议一个简单的Hann 或 Hamming 窗口。
我对您的特定库没有任何经验,但在我所知道的所有其他 FFT 库中,您首先要对数据进行窗口化。如果不出意外,库无法知道您希望使用哪个窗口,有时您不想使用窗口(如果您使用 FFT 进行重叠叠加过滤,或者如果您知道信号是在变换块中是周期性的)。
另外,顺便说一下,如果您正在执行 2 个 FFT,调用对数函数的开销似乎相对较小。