I am trying to take a Fourier transform of a density field estimated from mock galaxy survey catalogs.
Basically, you start with a list of galaxy positions, then you bin these positions over some grid spacing, getting an array with a weight for each grid position in the relevant volume of space.
Because I am trying to preserve the information about small spatial scales, I would like to avoid using large bins. Unfortunately, this makes a full array representation of the density field quite memory expensive, as there are huge numbers of empty bins which are for most purposes irrelevant.
I have thus far been binning without the array representation, instead keeping the data in a list of coordinates with their respective weights.
However, my understanding is that this is not sufficient to perform a standard FFT routine. I need evenly spaced data, which I do not have in this representation.
However, my situation seems somewhat different from the standard non-uniform FFT one; I am not dealing with "nonuniform sampling" per se, rather, my sampling is perfectly uniform but just too large to store with explicit zeroes.
Is there any implementation of FFT which would allow me to not create an explicit array of zeros, or at least leverage the fact that I implicitly know the "missing" bins in the sparse representation of my data are zero-valued?