|
intel fortran调用FFTW,real to complex。傅里叶正变换值为何只显示N/2+1数据,结果如下,怎样才能使得傅里叶变化的数据都显示出来呢?
程序:
program test1d
implicit none
integer,parameter::N=5
double precision in(N)
double complex out(N)
double precision var1(N)
integer :: plan
integer :: i
integer,parameter :: fftw_estimate = 64
!
do i=1,N
in(i)=i
end do
call dfftw_plan_dft_r2c_1d(plan,N,in,out,FFTW_ESTIMATE) ! in ---> out 1 means ifft
call dfftw_execute_dft_r2c(plan,in,out)
call dfftw_destroy_plan(plan)
call dfftw_plan_dft_c2r_1d(plan,N,out,var1,FFTW_ESTIMATE) ! out ---> var1 -1 means fft
call dfftw_execute_dft_c2r(plan,out,var1)
call dfftw_destroy_plan(plan)
do i=1,N
! var1(i)=var1(i)/N
write(*,*) i, in(i), out(i)!,var1(i)
end do
end program test1d
计算结果:
1 1.000000000000 (15.000000000000, 0.000000000000000)
2 2.000000000000 (-2.5000000000000, 3.44095480117793)
3 3.000000000000 (-2.5000000000000, 0.812299240582266)
4 4.000000000000 (0.0000000000000, 0.000000000000000)
5 5.000000000000 (0.0000000000000, 0.000000000000000)
|
|