How to plot wavelength and wavenumber FFT from intensity data

24 vues (au cours des 30 derniers jours)
Arwi Rinaldo
Arwi Rinaldo le 14 Oct 2020
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.

Réponses (1)

David Goodmanson
David Goodmanson le 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 commentaires
Arwi Rinaldo
Arwi Rinaldo le 5 Nov 2020
and how about the fft?
David Goodmanson
David Goodmanson le 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.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by