Matlab / Octave中的2D与3D FFT

时间:2014-04-28 11:59:15

标签: matlab fft octave

假设我在内存中有这个矩阵,我想计算3D FFT

   T =

        0    1    2    3
        4    5    6    7
        8    9   10   11
       12   13   14   15
       16   17   18   19
       20   21   22   23
       24   25   26   27
       28   29   30   31
       32   33   34   35
       36   37   38   39
       40   41   42   43
       44   45   46   47
       44   45   46   47
       52   53   54   55
       56   57   58   59
       60   61   62   63

real(fft2(T))
ans =

   2000    -32    -32    -32
   -128      0      0      0
   -112      0      0      0
   -128      0      0      0
   -144      0      0      0
   -128      0      0      0
   -112      0      0      0
   -128      0      0      0
   -144      0      0      0
   -128      0      0      0
   -112      0      0      0
   -128      0      0      0
   -144      0      0      0
   -128      0      0      0
   -112      0      0      0
   -128      0      0      0

real(fftn(T))
ans =

   2000    -32    -32    -32
   -128      0      0      0
   -112      0      0      0
   -128      0      0      0
   -144      0      0      0
   -128      0      0      0
   -112      0      0      0
   -128      0      0      0
   -144      0      0      0
   -128      0      0      0
   -112      0      0      0
   -128      0      0      0
   -144      0      0      0
   -128      0      0      0
   -112      0      0      0
   -128      0      0      0

为什么我得到相同的结果?如何在Matlab / Octave中完成3D FFT?

1 个答案:

答案 0 :(得分:2)

3D-FFT应该应用于3D阵列。如果将3D-FFT应用于2D阵列,则会得到与2D-FFT相同的结果,因为阵列中没有第三维。

以这种方式思考:N维FFT只是N个1维FFT,每个维度都有一个。如果数组中没有第三个维度,则沿该维度的FFT不执行任何操作。