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