How to plot wavelength and wavenumber FFT from intensity data
25 views (last 30 days)
Show older comments
Halo.
I have a problem with FFT data, i cant fine correct wavenumber domain and wavelength domain for FFT from my data.
my data base on 3648 pixel array with 8 nm between each pixel.
i want to fine wavelength domain and filter the noise of intensity.
0 Comments
Answers (1)
David Goodmanson
on 16 Oct 2020
Hi Arwi,
n = 3648, dpix = 8e-9; % 8nm seems small for a pixel width
The x array has spacing delx = dpix and is
x = delx*(0:n-1)
The conjugate variable to x is 1/lambda which I shall denote by ilam, since there does not seem to be a generally accepted symbol for this. For an n-point fft, the golden rule for array spacings [delx for array x and dilam for array ilam] is
delx*dilam = 1/n
which results in the array for inverse wavelength
dilam = 1/(delx*n); ilam = (1/(delx*n))*(0:n-1) % m^-1
Wave number is 2pi/lamda, so the k array is
k = (2*pi/(delx*n))*(0:n-1) % m^-1
In terms of pixels, in that case dpix = delx = 1 and
x = 0:n-1
ilam = (1/n)*(0:n-1) % pixel^-1
k = (2*pi/n)*(0:n-1) % pixel^-1
This makes sense since the first nonzero value of k (second point n the array) is k1 = 2*pi/n and
exp(i*k1*x) = exp( (2*pi*i/n)*(0:n-1) )
is one complete oscillation across the array. That's the lowest allowable nonzero periodic frquency.
2 Comments
David Goodmanson
on 28 Nov 2020
The data in the frequency domain is fft(your data)/3648, and the k or ilam array that goes with it is shown above.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!