FFT中的伪像


10

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

我认为这张图片很容易说明。IFFT信号只是“ FFT频谱”的逆变换,“差异”图是IFFT信号与原始信号之间的差异()。IFFT-原始

显然有一些文物,尽管它们确实很小。我想知道为什么它们首先出现。这是因为傅立叶变换的有限窗口吗?还是由于FFT算法中的问题?

注意:此图有32点,但是我已经检查了100、1000、1024、256和64点,并且总有这个残差存在相似大小的差异(或)。10-1610-15


4
所有有限精度的数学运算都有这些误差,而不仅仅是FFT。
Endlith 2013年

Answers:


16

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


是否存在这种错误可能超出浮点精度的情况?
Kitchi

6
只是为了确认@MattL的答案:,双精度浮点数中有53位尾数。因此,您看到的舍入误差仅在最后2位。那差不多就可以了。10-162-53
逻辑徘徊

@Kitchi:是的,在很多情况下,即使采用浮点格式,数字误差也可能是一个主要问题。矩阵求逆将是许多示例之一。这都与条件编号有关
Matt L.

1
@MattL。-太好了!感谢您的参考。
Kitchi

7

通常,数字不能完全以数字形式表示。引入了错误。如果您在Matlab中,则可以在命令中输入eps,它会为您提供一个数字。

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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.