intel fortran调用FFTW,傅里叶正变换值为何显示N/2+1-编程工具交流-专业Fortran论坛 -

Fortran Coder

查看: 46|回复: 3

[数学库] intel fortran调用FFTW,傅里叶正变换值为何显示N/2+1

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
23 元
贡献
10 点
发表于 2018-8-2 17:11:16 | 显示全部楼层 |阅读模式
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)
回复

使用道具 举报

544

帖子

0

主题

0

精华

大师

F 币
280 元
贡献
211 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2018-8-2 17:40:33 | 显示全部楼层
后面是共轭对称的呀。

2

帖子

1

主题

0

精华

新人

F 币
23 元
贡献
10 点
 楼主| 发表于 2018-8-2 17:59:41 | 显示全部楼层
vvt 发表于 2018-8-2 17:40
后面是共轭对称的呀。

就是2,3和4,5是共轭对称的?我用matlab验证了一下,好像是这样;我逆变换(ifft)后,也返回原值了。谢谢您。

544

帖子

0

主题

0

精华

大师

F 币
280 元
贡献
211 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2018-8-2 18:23:08 | 显示全部楼层
是的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2018-8-16 18:49

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表