[转载] 做FFT的陷阱# Computation - 科学计算
r*y
1 楼
【 以下文字转载自 Science 讨论区 】
【 原文由 rossby 所发表 】
个人体会,也许对上面的那个问题有用。用过几次fft,发现一不小心还真爱出
错,估计是我水平太不照了。
1。 for real function f(x), ifft(fft(f(x))) != f(x), only
real(ifft(fft(f(x)))) = f(x), 计算中的round off errors很容易
产生很小的虚数项,~1e-14 to 1e-12.
1。 for f(x), ifft(fft(f(x)))= f(x), 这个没问题。但是要是你想通过
fft做微分,就得小心。比如用matlab, suppose你的数据是128个点,
y = fft(f, 128)
所得到的y还是128个值,前65个对应wavenumber 0, 1, 64, 后面的对应
-63, -62, ..., -1. 你要是以为后面的对应65, 66, 127,做微分的就会出错,
【 原文由 rossby 所发表 】
个人体会,也许对上面的那个问题有用。用过几次fft,发现一不小心还真爱出
错,估计是我水平太不照了。
1。 for real function f(x), ifft(fft(f(x))) != f(x), only
real(ifft(fft(f(x)))) = f(x), 计算中的round off errors很容易
产生很小的虚数项,~1e-14 to 1e-12.
1。 for f(x), ifft(fft(f(x)))= f(x), 这个没问题。但是要是你想通过
fft做微分,就得小心。比如用matlab, suppose你的数据是128个点,
y = fft(f, 128)
所得到的y还是128个值,前65个对应wavenumber 0, 1, 64, 后面的对应
-63, -62, ..., -1. 你要是以为后面的对应65, 66, 127,做微分的就会出错,