24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1937  |  回复: 0

ssyyswjtu

金虫 (正式写手)

[求助] Fortran调用MKL进行FFT计算

我这里有一段程序代码,但计算结果是错误的,请帮我看一下错在哪个地方,谢谢!

program main
    Use MKL_DFTI

    real(8)::Xre_in(7)
    real(8)::Xim_in(7)
    real(8)::Xre_out(7)
    real(8)::Xim_out(7)
    Integer :: Dim = 1, Len = 7, Status
    Type(DFTI_DESCRIPTOR), POINTER :: My_Desc_Handle

    Xre_in(1)=0.34907D0
    Xre_in(2)=0.54890D0
    Xre_in(3)=0.74776D0
    Xre_in(4)=0.94459D0
    Xre_in(5)=1.13850D0
    Xre_in(6)=1.32850D0
    Xre_in(7)=1.51370D0

    Xim_in(1)=0.0D0
    Xim_in(2)=0.0D0
    Xim_in(3)=0.0D0
    Xim_in(4)=0.0D0
    Xim_in(5)=0.0D0
    Xim_in(6)=0.0D0
    Xim_in(7)=0.0D0
    Status = DftiCreateDescriptor (My_Desc_Handle, DFTI_DOUBLE , DFTI_REAL, Dim, Len)
    Status = DftiSetValue(My_Desc_Handle, DFTI_COMPLEX_STORAGE, DFTI_REAL_REAL);
    Status = DftiCommitDescriptor (My_Desc_Handle)
    Status = DftiComputeBackward (My_Desc_Handle, Xre_in, Xim_in)
    Status = DftiFreeDescriptor (My_Desc_Handle)
   
    do i=1,7
        print*,Xre_in(i),Xim_in(i)
    end do
   read(*,*)
end program main

也就是将复数的实部和虚部分开,调用的重载形式为status = DftiComputeBackward( desc_handle, xre_inout, xim_inout )

如果调用的重载形式为status = DftiComputeBackward( desc_handle, x_inout ),代码如下,结果是对的:
program main
    Use MKL_DFTI
    complex(8)::X_in(7)
    complex(8)::X_out(7)
    Integer :: Dim = 1, Len = 7, Status
    Type(DFTI_DESCRIPTOR), POINTER :: My_Desc_Handle
     X_in(1)=(0.34907D0,0D0)
     X_in(2)=(0.54890D0,0D0)
     X_in(3)=(0.74776D0,0D0)
     X_in(4)=(0.94459D0,0D0)
     X_in(5)=(1.13850D0,0D0)
     X_in(6)=(1.32850D0,0D0)
     X_in(7)=(1.51370D0,0D0)

    Status = DftiCreateDescriptor (My_Desc_Handle, DFTI_DOUBLE,  DFTI_COMPLEX, Dim, Len)
    Status = DftiSetValue(My_Desc_Handle, DFTI_PLACEMENT,DFTI_INPLACE);
    Status = DftiCommitDescriptor (My_Desc_Handle)
    Status = DftiComputeBackward(My_Desc_Handle, X_in)
    Status = DftiFreeDescriptor(My_Desc_Handle)
   do i=1,7
        print*,X_in(i)
    end do
   read(*,*)
end program main

[ Last edited by ssyyswjtu on 2012-4-17 at 08:36 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 ssyyswjtu 的主题更新
信息提示
请填处理意见