我利用matlab对fresnel衍射进行仿真,目前我有两张屏后电场、两张接收面的电场图(平方后),结果差的有点多,我想确认我matlab代码有没有问题


clc;
clear all;
close all;
load('picturedata_y2.mat'); %behind diffraction plane
Y = picturedata2;
%% parameter
mm=1e-3;
nm=1e-9;
d=50*mm; % receive plane distance
SL=30*mm; % plane size
lambda=890*nm;
k=2*pi/lambda;% wavevector
u1 = transpose(Y);
X = linspace(-SL/2, SL/2,length(u1)); %(d=0)
X1 = linspace(-SL/2, SL/2,length(u1)); %(d=50mm)
N=length(u1); %sample
%% calculate
E0 = [];
for sx = 1:N
E0(sx) = exp(-i*k*d)/(-i*lambda*d)*(sum(u1.*exp(-i*k/2/d*((X1(sx)-X).^2))));
end
figure;
plot(X1,power(abs(E0),2));
