这是用MATLAB复现菲涅尔衍射的一个程序,想请问对u跟u0执行相同的操作,为什么一个有介结果一个是空值
还有就是为什么diff之后矩阵的列为什么是4991而不是4999
%单位是um
lamda=0.5;%波长
k0=2*pi/lamda;%波数
z=10;%成像距离
d=8*lamda;%孔径
u0=0;
u=0;
x=0:0.005:25;%衍射面上的位置
for x0=-d/2:0.01:d/2%
u00=1;
h=exp(1j*k0*sqrt((x-x0).^2+z.^2))./sqrt((x-x0).^2+z.^2);
v=exp(1j*k0*sqrt(x0.^2+z.^2))./sqrt(x0.^2+z.^2);
u=u+0.01*u00*diff(h,z);%使用diff函数求偏微分
u0=u0+0.01*u00*diff(v,z);
% u=u+0.01*u00*(1j*k0*z*exp(1j*k0*sqrt((x-x0).^2+z.^2))./((x-x0).^2+z.^2)-z*exp(1j*k0*sqrt((x-x0).^2+z.^2))./(sqrt((x-x0).^2+z.^2)).^3);
% u0=u0+0.01*u00*(1j*k0*z*exp(1j*k0*sqrt(x0.^2+z.^2))/(x0.^2+z.^2)-z*exp(1j*k0*sqrt(x0.^2+z.^2))/(sqrt(x0.^2+z.^2)).^3);
% %手动先求出偏微分后的形式
end
u1=u./(-2*pi);
u2=u0./(-2*pi);
uu=abs(u1)/abs(u2);%归一化强度
plot(x(1,1:length(u)),uu,'-b');
hold on;