Solving FFT Problems with MATLAB and FFTW in C

  • Context: MATLAB 
  • Thread starter Thread starter birdhen
  • Start date Start date
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 reply · 2K views
birdhen
Messages
31
Reaction score
0
Hi there,

I am having trouble with some Fast Fourier Transforms.
I have been using both MATLAB and FFTW in c.
The problem is that I want to calculate the potential of a system from the overdensity. The equation in Fourier space is simple

phi(k)= -del(k)/(k^2) ,

where del is the overdensity, phi is the potential and k is the wavenumber.

To test this I use a simple del(x) = x, and feed this into the fft. I then run through the k values and divide through by k squared. When k =0, I am not sure what to do as obviously you can't divide by zero.
I have tried a variety of things such as setting phi(k) = 0 when k=0, or just leaving phi(k) = del(k)..both of which I am sure are wrong.

When I reverse FFT this phi(k), my result is always a sine wave with a wavelength the size of the x range, where as I am expecting (1/6)*x^3.

I am having trouble finding the answer online. Maybe I am searching for the wrong thing. Can anyone help?
Best wishes,
 
Physics news on Phys.org
birdhen said:
When k =0, I am not sure what to do as obviously you can't divide by zero.
I have tried a variety of things such as setting phi(k) = 0 when k=0, or just leaving phi(k) = del(k)..both of which I am sure are wrong.
The best choice here is to set up a grid of points such that ##k=0## is not included. This may require a shift that will add a complex phase to the result of the FFT, which can then be removed.