FFT 子集输出产生计算效率

信息处理 fft 算法 光谱效率
2022-02-18 05:07:16

传统的 FFT 给出N=2k输出为N=2k输入(通常很复杂)。时间努力是O(Nlog(N)). 如果我想要的只是一个紧凑的子集MN输出频率点,是否有一些方法可以“减少”FFT 晚期蝴蝶并实现比减少负担增加的效率更高的效率?

用于快速 DTFT 计算的类 FFT 算法的问题?很接近,但首先错过了真正的非频率问题,然后 Goetzel 变换效率阈值对我的情况来说太低了。

1个回答

假设您的问题是关于绕过 FFT 的后期阶段(如果不需要所有样本),这可能会给您一些见解:

知道 FFT 算法是对偶数和奇数样本的连续抽取,因此可以计算更小的 FFT,从而提高算法的效率;以下是在最后阶段合并之前的数字频谱图:

在此处输入图像描述

上图显示 FFT 抽取和下图显示最终 FFT 组合之间的所有内容都包含在本文中,因此我不会在此重复,但如果下图不是立即清晰,请查看:此信号是否完美可重构?

在此处输入图像描述

通过阅读链接的帖子和上面显示的图表,希望很清楚,除非信号在最后阶段合并,否则频谱将与频谱的其他区域叠加。因此,如果我们从最终输出返回一个阶段,如下图所示,我们可以希望与上图相关联,看到上面的 N/2 pt DFT 包含所有光谱(折叠在自身上),而下面的N/2 pt DFT 还包含所有频谱,但是如果与所示的适当相位旋转相结合,则由于所描述的相位关系是可分离的。

也就是说,我们可以看到合并的原因(如果我们无法访问两个先前的 DFT,信号将无法恢复)。但是,只要两个 DFT 都可用于给定的兴趣点,我们就可以将两个 DFT 的映射输出用于该点,而无需计算最后阶段的其余部分。这当然通过实现较小的 DFT 以相同的模式起作用(因为它们两个由两个 DFT 组成,每个 DFT 由 2 个 DFT 组成,等等。

在此处输入图像描述

我们可以从这个图中看到最后阶段是如何通过这些连续的 DFT 回到输入的。如果只需要点的子集,该图还可以立即了解可能的减少(并显示减少时节省的速度有多快——在这个简单的例子中,1 个点触及了所示 48 个节点中的 21 个!)。我认为这也很有趣(也许有点令人兴奋)如果你回到第一阶段,每个 2 pt DFT 输出由于相同的原因描述也包含所有的频谱,但在这种情况下折叠自身多个次(取决于多少阶段)。因此,输入端的每个 2 pt DFT 都连接到最终 DFT 中的每个输出端。

在此处输入图像描述