< 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)