我认为这张图片很容易解释。 IFFT信号只是“ FFT频谱”的逆变换,“差”图是IFFT信号与原始信号($ \ text {IFFT-Original} $)之间的差。
显然有一些文物,尽管它们确实很小。我想知道为什么它们首先出现。这是因为傅立叶变换的有限窗口吗?还是由于FFT算法中的某些问题?
注意:该图具有32点,但是我已经检查了100、1000、1024、256和64点,并且始终存在此残差大小相似($ 10 ^ {-16} $或$ 10 ^ {-15} $)。
#1 楼
您看到的差异是由于浮点格式的数字错误所致。执行FFT和逆FFT所需的所有操作只能以有限的精度完成,并且您已经在右下图中显示了这种有限精度的结果。评论
$ \ begingroup $
会不会出现这种误差超出浮点精度的情况?
$ \ endgroup $
– Kitchi
13年5月21日在20:14
$ \ begingroup $
为了确认@MattL的答案:$ 10 ^ {-16} \ approx 2 ^ {-53} $并且双精度浮点数中有53位尾数。因此,您看到的舍入误差仅在最后2位。那差不多就可以了。
$ \ endgroup $
–流浪逻辑
13年5月21日在20:18
$ \ begingroup $
@Kitchi:是的,即使在浮点格式中,在很多情况下数值误差也可能是一个主要问题。矩阵求逆将是许多示例之一。这都与条件编号有关。
$ \ endgroup $
– Matt L.
13年5月21日在20:39
$ \ begingroup $
@MattL。 -太好了!感谢您的参考。
$ \ endgroup $
– Kitchi
13年5月21日在21:25
#2 楼
通常,数字不能完全以数字形式表示。引入了错误。如果您在Matlab中,则可以在命令中输入eps,它会为您提供一个数字。EPS,不带参数,是从1.0到下一个较大精度数的距离,即EPS = 2 ^(-52)。
您在绘图中看到的错误在eps返回的范围内(即2 ^(-52))。
即使您期望IFFT输出中的实数值,您可能也会看到虚部不完全等于零。一样。
评论
所有有限精度的数学运算都有这些错误,而不仅仅是FFT。