FFT 中的伪影

信息处理 fft 傅里叶变换 自由度
2021-12-31 11:17:09

我最近意识到 FFT 并不完美。这意味着如果我接受一个信号,然后对其进行 FFT,然后进行逆 FFT,则结果输出与输入不完全相同。这是一张图片,向您展示我的意思:FFT 并不总是有效

我认为图像是相当不言自明的。IFFT 信号只是“FFT 频谱”的逆变换,“差异”图是 IFFT 信号和原始信号之间的差异()。IFFT - Original

显然有一些人工制品,虽然它们真的很小。我想知道为什么它们会首先出现。这是因为傅立叶变换的有限窗口吗?还是因为 FFT 算法中的某些东西?

注意:该图有 32 个点,但我检查了 100、1000、1024、256 和 64 个点,并且在相似幅度的差异中总是存在这种残留物()。10161015

2个回答

您看到的差异是由于浮点格式的数字错误造成的。执行 FFT 和逆 FFT 所需的所有操作只能以有限精度完成,并且您已在右下图中显示了这种有限精度的结果。

通常,数字不能以数字形式精确表示。引入了一个错误。如果你在 Matlab 中,你可以在命令中写 eps,它会给你一个数字。

EPS,没有参数,是从 1.0 到下一个更大的双精度数的距离,即 EPS = 2^(-52)。

您在图中看到的错误在 eps 返回的范围内(即 2^(-52))。

即使您期望 IFFT 的输出中有实数值,您也可能会看到虚部并不完全等于零。一样。