How to plot wavelength and wavenumber FFT from intensity data

24 Ansichten (letzte 30 Tage)
Arwi Rinaldo
Arwi Rinaldo am 14 Okt. 2020
Kommentiert: David Goodmanson am 28 Nov. 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.

Antworten (1)

David Goodmanson
David Goodmanson am 16 Okt. 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 Kommentare
David Goodmanson
David Goodmanson am 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.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by