
How to get spatial frequency from FFT?
    41 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Sohel Rana
 el 25 de Nov. de 2020
  
    
    
    
    
    Editada: Star Strider
      
      
 el 3 de Jul. de 2024
            Hi,
I have got the first graph based on the following code. How can I get the second graph after performing FFT?
I1=0.7;
I2=0.5;
I3=0.3;
L1=200;
L2=170;
n1=1;
n2=1.444;
lam=(1.52:0.0001:1.56);
Q12=(4*pi*n1*L1)./lam;
Q23=(4*pi*n2*L2)./lam;
Q13=Q12+Q23;
I=I1+I2+I3+2*sqrt(I1*I2).*cos(Q12)+2*sqrt(I2*I3).*cos(Q23)+2*sqrt(I1*I3).*cos(Q13);
plot(lam*1000,I)

0 comentarios
Respuesta aceptada
  Star Strider
      
      
 el 25 de Nov. de 2020
        The Fourier transform neither knows nor cares whether the units of the independent variable are time, space, or anything else.  It will do whatever you ask it to do (within limits, of course)
Try this: 
I1=0.7;
I2=0.5;
I3=0.3;
L1=200;
L2=170;
n1=1;
n2=1.444;
lam=(1.52:0.0001:1.56);
Q12=(4*pi*n1*L1)./lam;
Q23=(4*pi*n2*L2)./lam;
Q13=Q12+Q23;
I=I1+I2+I3+2*sqrt(I1*I2).*cos(Q12)+2*sqrt(I2*I3).*cos(Q23)+2*sqrt(I1*I3).*cos(Q13);
figure
plot(lam*1000,I)
L = numel(lam);
Ts = mean(diff(lam));
Fs = 1/Ts;
Fn = Fs/2;
FTI = fft(I)/L;
Fv = linspace(0, 1, fix(L/2)+1)*Fn * 1E-3;
Iv = 1:numel (Fv);
[pks,locs] = findpeaks(abs(FTI(Iv)));
figure
plot(Fv, abs(FTI(Iv)))
xlim([0  0.5])
xlabel('Spatial Frequency (nm^{-1})')
ylabel('Amplitude')
text(Fv(locs), abs(FTI(locs)), sprintfc('Peak %d',(1:numel(locs))), 'HorizontalAlignment','center', 'VerticalAlignment','bottom')
producing: 

.
11 comentarios
  Chueng
 el 3 de Jul. de 2024
				hello,can you explain how wavelength is converted to spatial frequency during the FFT  processing? Do you have any relevant formulas?
  Star Strider
      
      
 el 3 de Jul. de 2024
				
      Editada: Star Strider
      
      
 el 3 de Jul. de 2024
  
			The Fourier transform converts time, distance, or other variables to frequency units of cycles-per-original uint.  So for time domain signals with the sampling frequency in seconds, the resulting frequency uints are cycles-per-second, or Hertz (Hz).  Here, with the original units being nanometres, the resulting frequency uints are in cycles-per-nanometre, or more  simply,  or
 or  .
.  
 or
 or  .
.  EDIT — (3 Jul 2024 at 14:25)
In terms of your other question (How to use fft to analyse the refelction specturm? that I just now saw), simply replace ‘cycles’ with ‘wavenumber’ since that is how you choose to express it, instead labelling it  .
 .  
 .
 .  Más respuestas (0)
Ver también
Categorías
				Más información sobre Single-Rate Filters en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



