我有一个算法,可以将序列零填充到 4N,进行 FFT,并且只使用生成的 4N 中的最低频率 N 点。
这似乎是很多浪费的工作,有什么想法可以更快地完成吗?
我有一个算法,可以将序列零填充到 4N,进行 FFT,并且只使用生成的 4N 中的最低频率 N 点。
这似乎是很多浪费的工作,有什么想法可以更快地完成吗?
如果您只有几个分档,那么以下方法对您来说可能非常有效:
1. 只需在您需要的每个频率上进行 DFT。
2. 对每个有问题的频率使用 Goertzel 算法。
零填充到 4X 长度,计算更长的 FFT,然后仅使用底部的 1/4 分箱产生与原始长度 FFT 的窗口 Sinc 插值几乎相同的结果。
因此,只需使用原始 FFT 长度并使用具有合适窗口宽度的 3 相 Sinc 插值内核进行插值。
时域中的零填充为您提供了更高频率的解决方案,但没有新信息,因此它基本上提供了频域中的插值。根据信号的性质和所需的精度,您可以通过 N 点的常规 FFT 并进行适当的插值(线性、样条、pchip、sinc 等)来获得额外的频率点。