r****y 发帖数: 1437 | 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,做微分的就会出错, | y**********a 发帖数: 16 | 2 hehe, 第二条我也曾费了好大工夫才搞清楚怎么回事。
还是fftw简单好用,还快好多。
【在 r****y 的大作中提到】 : 【 以下文字转载自 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)
| r****y 发帖数: 1437 | 3
nod nod, strongly recommend fftw.
I heard the professor who taugh me signal processing said that,
at 1960s, the guys who invented fft can actually patent it. But they did not.
If they did, they should be much richer than Bill Gates now.
【在 y**********a 的大作中提到】 : hehe, 第二条我也曾费了好大工夫才搞清楚怎么回事。 : 还是fftw简单好用,还快好多。
| g*****e 发帖数: 19 | 4 is fftn & ifftn OK in matlab? It seems mathworks use fftw for fftn and ifftn?
Is that right?
【在 r****y 的大作中提到】 : 【 以下文字转载自 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)
| a***r 发帖数: 35 | 5
fftshit??这名字起的。。
【在 r****y 的大作中提到】 : 【 以下文字转载自 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)
| r****y 发帖数: 1437 | 6
fftshift, a typo. hoho.
【在 a***r 的大作中提到】 : : fftshit??这名字起的。。
| a***r 发帖数: 35 | 7 ft了。。我说呢
【在 r****y 的大作中提到】 : : fftshift, a typo. hoho.
|
|