Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

I must implement Fourier transform in cylindrical co-ordinates. Matlab offer fft function. How can I use this function ?

share|improve this question
    
Are you working with a 3D transform, or are you dealing with a FT in planes that are symmetric about an axis (as in an optical system with rotational symmetry about an axis)? –  Ron Gordon Jan 11 '13 at 10:41
    
Thanks for the response. I'm working with 3D transform. –  Ion Caciula Jan 11 '13 at 11:05
    
Isn't this just a Hankel transform? If so, there are fast Hankel transform functions available for Matlab. –  AnonSubmitter85 Aug 3 '13 at 0:34
add comment

1 Answer 1

Well, for starters, you can write

$$\hat{f}(v_{\rho},v_{\phi},v_z) = \int_0^{\infty} d \rho \rho \int_0^{2 \pi} d \phi \int_{-\infty}^{\infty} dz \: f(\rho, \phi,z) \exp[-i 2 \pi v_{\rho} \rho \cos{(v_{\phi} - \phi)}] \exp{(-i 2 \pi v_z z)} $$

First, perform a F.T. (i.e., matlab fft) in the $z$ variable. Now you can express the result in a Fourier series in $v_{\phi}$ and use a Bessel transform over $v_{\rho}$.

share|improve this answer
    
Can you give me an example to verify the code? –  Ion Caciula Jan 11 '13 at 18:54
    
You might write $\bar{f}(\rho, \phi,v_z) = \int_{-\infty}^{\infty} dz \: f(\rho, \phi,z) \exp{(-i 2 \pi v_z z)}$. You can do this using the Matlab fft function. Now you are left, for each $v_z$, to do a polar FFT over $(\rho, \phi)$. Scroll to the bottom of this page: cs.technion.ac.il/~elad/software and you will get Matlab code for a polar FFT, and a paper that describes how it is done. –  Ron Gordon Jan 11 '13 at 19:17
    
What is connection between $\widehat{f}(vρ,vϕ,vz)$ and $ \overline{f}(ρ,ϕ,vz)$? –  Ion Caciula Jan 12 '13 at 4:10
    
They are Fourier transforms over the $z$ coordinate. –  Ron Gordon Jan 12 '13 at 4:12
    
Thanks for information. I read again and I understood your response. The basic algorithm is: -transform Cartesian coordinates in cylindrical coordinates. In Matlab exist the function car2pol.For X,Y, Z vectors which represent Cartesian coordinates,it's necessary to obtain the cylindrical coordinates (ρ,ϕ,$v_z$). So we write:[ρ,ϕ,$v_z$]=car2pol(X,Y,Z).F is the vector with all values of f(ρ,ϕ,$v_z$). I apply fft to F: G=fft(f); Let be Polar_FFT polar fft function, where we suppose that is implemented. For having the final result I must write: $H=\text{Polar_FFT}(G*exp[−i2πv_ρρcos(v_ϕ−ϕ)])$? –  Ion Caciula Jan 12 '13 at 9:55
show 5 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.