matlabfftnon-uniform-distribution

Fourier transform in 3 dimensions on a non uniform grid in matlab


I need to calculated a 3D Fourier transform of a structures I have their [x,y,z] coordinates. I thought of interpolating to a uniform grid of the smallest spacing between the points and use fft, but that turned to be impractical in memory, so fft can't be used. A sample from my [x,y,z] data is:

xyz=[ 23.1860   44.9710    5.9280
      25.5370   44.0090    4.9960
      24.5030   44.5890    6.2280
      20.0150   46.4080    7.9110
      24.9910   44.6760    7.5330
       4.8660   44.7120    8.6830
      36.7170   33.7440    6.5570
      11.1510   40.0590    5.8120
      29.2550   34.8750   10.0850
       5.4230   48.8200   12.7380
      38.2020   35.7590    1.3260 ];

Would appreciate your advise


Solution

  • I've not used this myself, but consider using the NFFT posted on Chemnitz University of Technology Department of Mathematics site. It reduces the O(N^2) requirement to just O(NlogN) as in the FFT case. Also, it now includes Matlab classes to interface with the mex files.

    You can download some examples on the site that show to to interact with MATLAB and the faq has instructions on how to use in Windows+MATLAB (if you are).

    NFFT requires the initialization of a plan and precomputes several things to increase performance. It looks like it will take some effort to get familiar with but may be very helpful to you.

    It is licensed under the GPL.