Diffraction pattern of plane wave through Circular Aperture

36 Ansichten (letzte 30 Tage)
I have done diffraction pattern for infinite slit (in the y-dir.) with a =10 microns (total opening = 20 microns). but cannot do same thing for circular aperture with Diameter = 15 microns. Here is my code for slit aperture. Requesting for circular aperture-plane wave diffraction pattern solution.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This program creates a plane wave function U(r), the transmission
% profile of a 20 um slit p(x), and a combination of the two, g(x),
% a distance away d computed from the user input Fresnel number.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
% cwd = pwd;
% cd(tempdir);
% pack
% cd(cwd)
posx=[];
posy=[];
% posy=[];
lambda=1.31; % wavelength
k=(2*pi)/lambda;
z=1;
Nf=input('Enter Fresnel Number: ');
slit=10;
d=(slit^2)/(lambda*Nf);
%d=input('Enter distance of observation plane in microns: ');
Ur=[];
aperture=[];
% 2-D Plane Wave Amplitude U(x)
for x=-30:1:30
for y=-30:1:30
posx=[posx x];
posy=[posy y];
u=exp(-j*k*z); % plane wave
Ur=[Ur u];
% begin slit definition
if (x>=-slit)&(x<=slit)
amp=1;
else
amp=0;
end %
aperture=[aperture amp];
end
IU=abs(Ur).^2;
% Complex Wave after Aperture f(x)
fx=Ur.*aperture;
If=abs(fx).^2;
% g(x) and Intensity Determination |g(x)|^2
hx=[];
aa=[];
ho=(j/(lambda*d))*exp(-j*k*d);
for a=-70:0.025:70
aa=[aa a];
const=(-j*pi)/(lambda*d);
h1=a^2;% Fresnel Appx. of transfer function of free space
h2=exp(const*h1);
hx=[hx h2];
end
hhx=ho*hx;
gx=conv2(fx,hhx,'same'); % direct convolution
Ig=abs(gx).^2;
% intensity normalization
maxg1=max(Ig);
% Pupil Function p(x,y)
figure(1);
plot(posx, aperture);
title('Slit Transmission Profile');
xlabel('X-Distance (microns)');
ylabel('Transmission Value');
% Aperture Function f(x,y)
figure(2);
plot(posx,If);
title('Aperture Shadowed Beam Pattern (d=0)');
xlabel('X-Distance (microns)');
ylabel('Normalized Intensity');
% Observation Plane g(x)
figure(3);
plot(posx,Ig/maxg1);
t1=sprintf('Aperture Affected Beam Pattern (Nf=%f, d=%f microns)',Nf,d);
title(t1);
xlabel('X-Distance (microns)');
ylabel('Normalized Intensity');

Akzeptierte Antwort

Bjorn Gustavsson
Bjorn Gustavsson am 26 Okt. 2022
Your first problem is surely that all your variables are 1-D arrays and it seems you still only model some kind of linear aperture. To model a circular aperture you will need to model a fully 2-D circular aperture. Start by making posx and posy 2-D arrays and then make aperture into a circular pupil.
  4 Kommentare
Bjorn Gustavsson
Bjorn Gustavsson am 27 Okt. 2022
You're welcome, happy that it helped.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Mathematics finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by