< FFTW > 配列番号と波数の対応
FFTWを用いて長さnのデータを変換(正変換)したときの,フーリエ空間での配列番号と波数の対応.ただし,nは偶数.
波数は,-n/2+1,-n/2+2,...,-1,0,1,...,n/2 のn個(整数)
配列の要素番号を1始まりでi=1,2,...,nとしたとき,
i=1,2,....,nに対応する波数kの並びは,
0,1,2,...,n/2,-n/2+1,-n/2+2,...,-1
となる.
このときkをiの関数として書くことができる.
i=n/2+1とn/2+2との間の値の飛びは,絶対値(|・|)と符号関数(sgn)を用いることで表現でき,
k=sgn( (n+3)/2 -i )*{ -|n/2+1-i|+n/2 }
Fortran90で書くと,
integer,parameter :: n=32
integer :: i,k
k=int(sign(1.d0,dble(n+3)/2.d0-dble(i))) *(-abs(n/2+1-i)+n/2)