Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 使用MKL的复到实IFFT_Fortran_Fft_Intel Mkl - Fatal编程技术网

Fortran 使用MKL的复到实IFFT

Fortran 使用MKL的复到实IFFT,fortran,fft,intel-mkl,Fortran,Fft,Intel Mkl,我试图对具有共轭偶数对称性的复杂输入阵列进行一维IFFT变换,其中z(1)和z(N/2+1)为实。阵列的总大小为N=256。如果我按照以下方式准备IFFT: stat = DftiCreateDescriptor( desc_handle, DFTI_DOUBLE, DFTI_REAL, 1,256) stat = DftiSetValue(desc_handle, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX) stat = DftiSe

我试图对具有共轭偶数对称性的复杂输入阵列进行一维IFFT变换,其中
z(1)
z(N/2+1)
为实。阵列的总大小为
N=256
。如果我按照以下方式准备IFFT:

stat = DftiCreateDescriptor( desc_handle, DFTI_DOUBLE, DFTI_REAL, 1,256)
stat = DftiSetValue(desc_handle, DFTI_CONJUGATE_EVEN_STORAGE, DFTI_COMPLEX_COMPLEX)

stat = DftiSetValue(desc_handle, DFTI_PLACEMENT, DFTI_NOT_INPLACE)

stat = DftiComputeBackward(desc_handle, X_in, M_out)
。。。其中
X_in
具有上述共轭对称性。这意味着
M_out
应该是一个数学实数数组,如果:

real(dp) :: M_out(N+2)
然后,期望的实数fortran数组的每一个元素都等于零

complex(dp) :: M_out(N/2)
然后,预期的复杂fortran数组将具有
N/2
大小,虚部为零


然而,我得到的结果是不真实的后,做了上述。这就像例程不理解输入复数fortran数组不具有共轭偶数对称性一样。为什么呢?我是否必须添加任何其他首选参数以确保正确读取输入的结构?

在本例中,前向域是实域,后向域是共轭的,即使使用复杂的存储。因此,MKL期望X_in的类型为Complex[],M_out的类型为Real[]。结果是真实的


我怀疑,你提供了一个复杂的数组。然后该数组被解释为Real[],并包含向后转换的实际结果。虚部不插入零。

在本例中,前向域是实域,后向域是共轭域,即使使用复数存储。因此,MKL期望X_in的类型为Complex[],M_out的类型为Real[]。结果是真实的


我怀疑,你提供了一个复杂的数组。然后该数组被解释为Real[],并包含向后转换的实际结果。虚数部分不插入零。

问得好,达喀罗!虽然我不知道答案,但我对您的格式进行了一些编辑,以帮助保持可读性。如果您单击“编辑”,您将能够看到我所做的更改,并且能够在您提出更多问题或提供答案时自己进行更改。非常感谢您所做的更改。对不起,我是论坛的新手,所以我不知道如何做所有这些。我将学习它们,以便使我的问题更具可读性。再次感谢!!那么结果如何呢?哪种输入?尝试生成一个我们可以尝试的简单测试程序(并使用较小的向量)。输入是一个大小为256的fortran复杂数组,具有共轭对称偶数特性。从数学上讲,这意味着IFFT的结果必须是真实的。在我上面的例子中,X_in是输入。我应该让M_成为实部(零虚部),但我没有。这就像MKL FFT库不理解输入矩阵不具有此属性一样。我必须添加更多的内容来指定输入数组具有这样的结构吗?谢谢有时你会用N/2+1个非常好的问题,达喀罗!虽然我不知道答案,但我对您的格式进行了一些编辑,以帮助保持可读性。如果您单击“编辑”,您将能够看到我所做的更改,并且能够在您提出更多问题或提供答案时自己进行更改。非常感谢您所做的更改。对不起,我是论坛的新手,所以我不知道如何做所有这些。我将学习它们,以便使我的问题更具可读性。再次感谢!!那么结果如何呢?哪种输入?尝试生成一个我们可以尝试的简单测试程序(并使用较小的向量)。输入是一个大小为256的fortran复杂数组,具有共轭对称偶数特性。从数学上讲,这意味着IFFT的结果必须是真实的。在我上面的例子中,X_in是输入。我应该让M_成为实部(零虚部),但我没有。这就像MKL FFT库不理解输入矩阵不具有此属性一样。我必须添加更多的内容来指定输入数组具有这样的结构吗?谢谢有时你会用N/2+1个非常好的问题,达喀罗!虽然我不知道答案,但我对您的格式进行了一些编辑,以帮助保持可读性。如果您单击“编辑”,您将能够看到我所做的更改,并且能够在您提出更多问题或提供答案时自己进行更改。非常感谢您所做的更改。对不起,我是论坛的新手,所以我不知道如何做所有这些。我将学习它们,以便使我的问题更具可读性。再次感谢!!那么结果如何呢?哪种输入?尝试生成一个我们可以尝试的简单测试程序(并使用较小的向量)。输入是一个大小为256的fortran复杂数组,具有共轭对称偶数特性。从数学上讲,这意味着IFFT的结果必须是真实的。在我上面的例子中,X_in是输入。我应该让M_成为实部(零虚部),但我没有。这就像MKL FFT库不理解输入矩阵不具有此属性一样。我必须添加更多的内容来指定输入数组具有这样的结构吗?谢谢有时使用N/2+1