如果我理解正确,鉴于您的 3D 体积数据x[m,n,p],首先您要在前两个变量中进行 2D 前向 DFT(通过 2D FFT)m,n(即,对于沿第 3 维的每个 mn 平面),然后沿第 3 维对向量进行 1D 逆 DFT。
请注意,在第一个操作中,您将每个数据平面替换为频率平面并创建一个新的体积数据,然后您将对该结果体积进行逆 DFT,下面的 MATLAB/OCTAVE 代码演示了一个简单的示例:
A = zeros(2,2,3); % create a 3D data array
A(:,:,1) = [1,2;3,4]; % first plane of 3D data
A(:,:,2) = [1,2;3,4]; % second plane of 3D data
A(:,:,3) = [1,2;3,4]; % third plane of 3D data
B = fft2(A) % it'll take 2D-DFT independently for each plane of A
C = ifft(B,[],3) % we indicate that ifft() be taken along 3rd dimension...
如您所见,由于在第一步之后,我们对 B 的每个平面都有相同的频率数据,因此由于逆 DFT,第三步沿第三维为 C 的每个向量产生了脉冲。
我相信这很容易吗?但仍然分两步(您可以将它们合并为一行,但仍然是两个调用)......