4.菲涅尔波带片
(1)偶数波带片:将波带片所在屏幕分为1001*1001个点,依次求出各点处的半波带数,为奇数则涂黑,为偶数则不涂黑表示透光。设波带片中心为原点。
clear;
lam=600e-6; %设置波长为600nm
R=3; %设置菲涅尔波带片半径为3mm
f=1000; %设置焦距1m
ym=R;
xm=R;
y=linspace(-ym,ym,1001);
x=linspace(-xm,xm,1010); %设置程序中x,y向量,将屏幕分为1001*1001个点
for m=1:1001
for n=1:1001 %设置二重循环依次求菲涅尔波带片屏幕上各点
p=sqrt(x(m).^2+y(n).^2); %求各点所在圆半径
k=fix(p.^2./(lam.*f)); %求各点半波点数
if p>R%如果屏幕上点大于波带片半径
I(m,n)=0;% 则用灰色表示背景,不是波带片部分
else
if mod(k,2)==1%判断半波带数奇偶,为奇数则涂黑
I(m,n)=0;
else
I(m,n)=1; %为偶数则不涂黑表示透光
end
end
end
end
colormap(gray(255))
N=255; %设置灰度等级
Ir=I*N;
image(Ir); %绘制波带片图像
运行程序得到如下图像,为菲涅尔偶数波带片:
(2)奇数波带片:将波带片所在屏幕分为1001*1001个点,依次求出各点处的半波带数,为偶数则涂黑,为奇数则不涂黑表示透光。设波带片中心为原点。
clear; %设置波长为600nm
lam=600e-6; %设置波长为600nm
R=3; %设置菲涅尔波带片半径为3mm
f=1000; %设置焦距1m
ym=R;
xm=R;
y=linspace(-ym,ym,1001);
x=linspace(-xm,xm,1010); %设置程序中x,y向量,将屏幕分为1001*1001个点
for m=1:1001
for n=1:1001 %设置二重循环依次求菲涅尔波带片屏幕上各点
p=sqrt(x(m).^2+y(n).^2); %求各点所在圆半径
k=fix(p.^2./(lam.*f)); %求各点半波点数
if p>R%如果屏幕上点大于波带片半径
I(m,n)=0.5;% 则用灰色表示背景,不是波带片部分
else
if mod(k,2)==1%判断半波带数奇偶,为奇数则不图黑表示透光
I(m,n)=1;
else
I(m,n)=0; %为偶数则涂黑
end
end
end
end
colormap(gray(255))
N=255; %设置灰度等级
Ir=I*N;
image(Ir); %绘制波带片图像
运行程序得到如下图像,为菲涅尔奇数波带片:
展开阅读全文