Bonjour,
alors voilà, comme vous vous en doutez j'ai un soucis
je souhaite simuler la diffraction de Fresnel en 1dimension, je commence donc par créer une ouverture rectangulaire, j'essaye d'utiliser la formule de Fresnel avec la transformé de fourier suivante :,x' étant l'axe dans le plan d'observation et x celui dans le plan de la fente. Le problème dans ma simulation c'est que lorsque j'utilise la FFT, je ne sais pas comment faire pour la considérer au point x'/(lambda*z), ce qui fait que lorsque je cherche à regarder la propagation selon z, mon faisceau ne diverge pas. la FFT correspond bien à la forme d'intensité que je dois avoir dans mon plan d'observation si je trace une colonne de la matrice, mais on n'a pas de divergence.
J'ai essayé diverse chose plus ou moins bizarre, mais je ne vois vraiment pas comment faire. Je pense que ça vient d'un problème d'échelle de la FFT.
vous trouverez mon code matlab :
et ici juste une image pour que vous voyez la tête de ma petite simulation, ainsi que le résultat : on voit en premier la forme de la fente et l'autre c'est l'intensité en fonction de la distance, donc la fente doit se situer à gauche et vers la droite on devrait avoir quelque chose qui s'élargit comme la diffraction le veux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 %%%%%% Simulation of the Fresnel Diffraction, Matlab %%%%%%% %% Initialization %% clear all close all %% Grating %% for i_grating = 1:250 % creation of a rectangular aperture A_t(i_grating) = 0; end for i_grating = 251:350; A_t(i_grating) = 1; end for i_grating = 351:601 A_t(i_grating) = 0; end %% Parameters %% Lambda = 795e-9; % wavelength k = 2*pi/Lambda; % the wave vector z = [0.06 :0.01: 6]; % distance from the grating dx = 20e-6; % size of a pixel in micrometer x =[-6000e-6 :dx: 6000e-6]; % coordinate on the grating plane x2 =[-6000e-6 :dx: 6000e-6]; % coordinate on the screen plane plot(A_t) % show the amplitude just after the grating(z=0+) %% Simulation %% for i_z = 1:length(z) % first loop on the distance to the grating for i_x = 1:length(x) % loop on all point of the grating f(i_x)=A_t(i_x)*exp(1i*k*((x(i_x))^2)/(2*z(i_z))); end A = fftshift(fft(f)); for i_x2 = 1:length(x2) % we do a loop for all point in the observing plane at z = cst C =(1/(1i*Lambda*z(i_z)))*exp(1i*k*(z(i_z)+(x2(i_x2))^2)/(2*z(i_z))); A_p(i_x2,i_z) = abs(C*A(i_x2)); end end %% 2D Map %% figure; imagesc(A_p); colormap jet; % color representing the light intensity
Merci bien à ceux qui prendront le temps d'y jeter un coup d’œil.
Partager