IBM ESSL:DFT - 真实到复杂&复杂到实际 - 最终数组大于初始数组

时间:2015-07-29 09:05:01

标签: double fft complex-numbers dft

我有一个真正的2D双精度数组。我想对它进行FFT,对结果进行一些操作,并进行逆FFT。我在Blue Gene Q上使用IBM ESSL库。

功能DRCFT2正在进行实数到复数变换(http://www-01.ibm.com/support/knowledgecenter/SSFHY8_5.3.0/com.ibm.cluster.essl.v5r3.essl100.doc/am5gr_hsrcft2.htm?lang=en)。函数DCRFT2正在进行复数到实数变换(http://www-01.ibm.com/support/knowledgecenter/SSFHY8_5.3.0/com.ibm.cluster.essl.v5r3.essl100.doc/am5gr_hscrft2.htm?lang=en)。

开始实数数组大小为(nx,nz)。在DRCFT2之后,复数阵列大小为(nx / 2 + 1,nz)。在DCRFT2之后,最终的实际阵列大小是(nx + 2,nz)。

开始和最终的真实数组有不同的大小,我该如何比较呢?

ps:如果我将第一个真实数组放入一个复杂的数组并执行复杂的复杂DFT(DCFT2),那么最终结果和第一个结果将具有相同的大小,我可以比较它们。无论如何要做与DRCFT2和DCRFT2类似的事情?

1 个答案:

答案 0 :(得分:1)

根据DCRFT2 documentation you link to

  

<强> X
  是数组X,包含要转换的n2个数据列。由于复共轭对称性,输入仅由数组的第一((n1)/2)+1行组成    [...]
  返回时
  的ý
   [...]
  是数组Y,包含n1行和n2实数离散傅里叶变换X列的n1=nx列。

案例n2=nz(nx/2+1,nz)。换句话说,如果你输入一个大小为DCRFT2的复杂数组作为(nx,nz)的输入参数,你应该得到一个大小为{{1}}的实数组输出,这样你就可以很容易地比较你的开始和最后的真实数组。