Finding the below fft

2 vues (au cours des 30 derniers jours)
Amy Topaz
Amy Topaz le 29 Mar 2022
Modifié(e) : Amy Topaz le 3 Avr 2022
I have the fft result with which I need to perform the spatial frequency distribution in (um)-1 units and plot the spatial frequency spectrum for y=0.01,0.02,0.03,1. I need some idea how to proceed with that?

Réponse acceptée

William Rose
William Rose le 29 Mar 2022
Modifié(e) : William Rose le 29 Mar 2022
[edited: correct typos, not in the code]
You are using the 2D FFT. The 2D FFT is appropriate for images or other 2D data in which there is a uniform grid spacing along the two independent variables. In this case, there are only 4 y-values, and they are unevenly spaced. Therefore I recommend doing the 1D FFT on the array Hy. This will compute the 1D FFT of each column of Hy. Since x varies along the rows of Hy, I take the FFT of the transpose of Hy. fft(Hy') returns a complex array whose columns are the FFTs of the rows of Hy. The absolute values of the complex numbers are the magnitudes of the Fourier transform.
%AmyTopazscript.m, modified by WCR, 2022-03-28
clear;
g = 1e-7;
dx=0.01;
x = -0.5:dx:0.5;
N=length(x);
df=1/(N*dx); %frequency interval for the FT
f=(0:N-1)*df; %frequency vector for the FT
y = [0.01*g 0.2*g 0.6*g g]';
Hy = (-1/2*pi)*(log((g/2 + x).^2 + (y).^2./(g/2 - x).^2 + (y).^2));
Z = fft(Hy');
%Plot results
figure;
subplot(211)
plot(x,Hy(1,:),'-k',x,Hy(2,:),'-r',x,Hy(3,:),'-g',x,Hy(4,:),'-b');
grid on; xlabel('x (\mum)'); ylabel('Hy(x)');
legend('0.01g','0.2g','0.6g','g');
subplot(212)
plot(f,abs(Z(:,1)),'-k',f,abs(Z(:,2)),'-r',f,abs(Z(:,3)),'-g',f,abs(Z(:,4)),'-b');
grid on; xlabel('Spatial frequency (\mum^-^1)'); ylabel('|FT(Hy)|');
xlim([0 N*df/2]); %plot FT up to Nyquist frequency
legend('0.01g','0.2g','0.6g','g');
Try the code above.

Plus de réponses (0)

Catégories

En savoir plus sur Graphics Performance dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by