由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Computation版 - 关于 fftw 的问题
相关主题
关于三维快速傅立叶(FFT)一个发现: fftw里面的C语言做Fourier transform比Matlab快6倍 (无内文)
请问傅立叶变换中把每个点分割成数值相同的多个点能提高精度吗matlab改成C++,还用了号称史上最快的fftw,结果慢了一倍
请问有哪位大牛知道如何对非周期信号求傅立叶变换吗?问个比较初级的问题关于cosine transform 解篇微分的
fft algorithmfftw有memory leak
[转载] 做FFT的陷阱compile lammps using fftw-2.1.5 and intel compiler
a C language question regarding pointer usage请问fftw和nag的fft谁好?
FFT并行的fft大家用什么library?
求DFT的Fortran源代码。。。。。。。。。。。。。。。。。。。。fftw mpi
相关话题的讨论汇总
话题: modes话题: fftw话题: 函数话题: 给定话题: 变换
进入Computation版参与讨论
1 (共1页)
w*******U
发帖数: 256
1
测试 fftw_r2c 的 3d 函数,就是从实数域到复数域的三维傅立叶正变换。
物理空间里给了一个简单的实函数: cos(m*x1),这里 m 是个整数,x1 是 0 到 2*pi
上的实数。也就是说所给的物理空间的函数只是 x1 的函数,而跟其他两个坐标 x2,
x3 都无关。
变换出来的有两个 modes,各占 0.5,跟所给数组大小有关,但不包括 (m,0,0)。比如
,给 50x50x50 的数组,给定 m=1,那么这两个 modes 是 (0,26,0)和 (25,24,0);
若给定 m=2 则这两个 modes 是 (1,2,0) 和 (24,48,0)。若是改变数组大小为
30x40x50,则 m=1 对应的 modes 为 (0,20,40) 和 (15,3,10)。
然后再利用反变换 fftw_c2r,则确实能恢复原先给定的实函数,也就是可以 dealised.
实数到复数应该有 hermite symmetry,但三维情况下的应该是什么样子?看了
numerical recipes 的 c 语言版本中关于多维 fft 的内容,但没看懂。我不是做算法
的,也不知道以上的结果是否正确。希望大家帮忙。万分感谢!
w*******U
发帖数: 256
2
测试 fftw_r2c 的 3d 函数,就是从实数域到复数域的三维傅立叶正变换。
物理空间里给了一个简单的实函数: cos(m*x1),这里 m 是个整数,x1 是 0 到 2*pi
上的实数。也就是说所给的物理空间的函数只是 x1 的函数,而跟其他两个坐标 x2,
x3 都无关。
变换出来的有两个 modes,各占 0.5,跟所给数组大小有关,但不包括 (m,0,0)。比如
,给 50x50x50 的数组,给定 m=1,那么这两个 modes 是 (0,26,0)和 (25,24,0);
若给定 m=2 则这两个 modes 是 (1,2,0) 和 (24,48,0)。若是改变数组大小为
30x40x50,则 m=1 对应的 modes 为 (0,20,40) 和 (15,3,10)。
然后再利用反变换 fftw_c2r,则确实能恢复原先给定的实函数,也就是可以 dealised.
实数到复数应该有 hermite symmetry,但三维情况下的应该是什么样子?看了
numerical recipes 的 c 语言版本中关于多维 fft 的内容,但没看懂。我不是做算法
的,也不知道以上的结果是否正确。希望大家帮忙。万分感谢!
m*****k
发帖数: 58
3
我用的是c语言版的fftw3, 可能会不一样.
r2c 是有hermite symmetry. f(-k) = f(k)*, 它的相位是[0, 2\pi*(N-1)/N], r2c 就
会有f(n) = f(N-n). fftw偷懒, 只存了一半的系数, 后一半全是0, 不会有 (0,20,40
)这样的mode.可能是你的计数方式搞错了吧.
w*******U
发帖数: 256
4
谢谢你的回复。我已经搞清楚错误了。
1. c2r 的会抹掉原来的谱空间,所以得随时 copy;
2. 我给的长度不对。如果是在谱空间展开从 -10 到 +10,应该给21个 modes。
我是用谱方法求解一个线性偏微分方程,要 dealise, 物理空间的 nodes 只需要和谱空间的 modes 一样多就行了。
谢谢你的回复!

40

【在 m*****k 的大作中提到】
: 我用的是c语言版的fftw3, 可能会不一样.
: r2c 是有hermite symmetry. f(-k) = f(k)*, 它的相位是[0, 2\pi*(N-1)/N], r2c 就
: 会有f(n) = f(N-n). fftw偷懒, 只存了一半的系数, 后一半全是0, 不会有 (0,20,40
: )这样的mode.可能是你的计数方式搞错了吧.

1 (共1页)
进入Computation版参与讨论
相关主题
fftw mpi[转载] 做FFT的陷阱
我们碰到的大麻烦——急寻计算机工作和博后机会 (转载)a C language question regarding pointer usage
fftw如何将plan作为子程序参数?FFT
FFT in C求DFT的Fortran源代码。。。。。。。。。。。。。。。。。。。。
关于三维快速傅立叶(FFT)一个发现: fftw里面的C语言做Fourier transform比Matlab快6倍 (无内文)
请问傅立叶变换中把每个点分割成数值相同的多个点能提高精度吗matlab改成C++,还用了号称史上最快的fftw,结果慢了一倍
请问有哪位大牛知道如何对非周期信号求傅立叶变换吗?问个比较初级的问题关于cosine transform 解篇微分的
fft algorithmfftw有memory leak
相关话题的讨论汇总
话题: modes话题: fftw话题: 函数话题: 给定话题: 变换