How to plot wavelength and wavenumber FFT from intensity data

25 views (last 30 days)
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.

Answers (1)

David Goodmanson
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
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.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!