How to take Fourier transforms wrt arbitrary variables?

130 Views Asked by At

I want to take FFT of following forms: Fourier in spherical coordinates

So in fact, my f(theta,phi) is a 3D image voxel, ie it has f(radius,theta,phi). If I had to take integral along dx, that would amount to just selecting my IMG(ylocation,:,zlocation)=currentvoxel and running fft(currentvoxel) on it. However, now I have to only take fft along phi. Which is hard because it requires for me to find all the locations with theta=currenttheta and for each r=currentr, I have to find all the phi's to take fft.

I don't even know how to unroll the phi to take fft. When it's Cartesian coordinates, it's easy, just start from x=0,..x=end and run fft. Is phi case the same? Get all the phi's on a certain r,theta and sort them 0 to 2pi and take fft?

Or maybe sine/cosine transforms like this: cosine/sine transform

If this was a f(x,y), I think the way to do this in MATLAB would be to take dct(f*(x.^2+y.^2)). In other words running a discrete cosine transform. Am I right?

Extra clarification on second part: The integral I'm interested in is: bessel where j_l(kr): expanded j_l and expanded further finally the F_(l)(t) is given by previous: cosine/sine transform

0

There are 0 best solutions below