clc %%% 《信息光学数字实验室 matlab版》-钱晓凡编著 实验三 菲涅尔衍射积分的 S--FFT算法
clear
close all
r=512,c=r; %给出衍射面上的抽样数
a=zeros(r,c); %预设衍射面
a(r/2-r/4:r/2+r/4,c/2-c/4:c/2+c/4)=1; %生成衍射孔
figure;imshow(a,[]);
lamda=6328*10^(-10);k=2*pi/lamda; %赋值波长、波数
L0=5*10^(-3); %赋值衍射面尺寸,单位:米
d=0.1; %赋值观察屏到衍射面的距离,单位:米
x0=linspace(-L0/2,L0/2,c); %生成衍射面x轴坐标
y0=linspace(-L0/2,L0/2,r); %生成衍射面y轴坐标
[x0,y0]=meshgrid(x0,y0); %生成衍射面二维坐标网格
L=r*lamda*d/L0, %给出观察屏的尺寸,单位:米
x=linspace(-L/2,L/2,c); %生成观察屏x轴坐标
y=linspace(-L/2,L/2,r); %生成观察屏y轴坐标
[x,y]=meshgrid(x,y); %生成观察屏二维坐标网格
%下面开始用式(3-4)计算衍射积分
F0=exp(j*k*d)/(j*lamda*d)*exp(j*k/2/d*(x.^2+y.^2)); % 赋值exp(ikd)/(iλd)exp[ik(x2+y2) /2d]
F=exp(j*k/2/d*(x0.^2+y0.^2)); %赋值exp[ik (x02+y02) /2d]
a=a.*F; %赋值U0(x0,y0)exp[ik (x02+y02) /2d]
Ff=fftshift(fft2(a)); %完成U0(x0,y0)exp[ik (x02+y02) /2d]的傅里叶变换
Fuf=F0.*Ff; %得到观察屏上的光场分布U (x,y)
I=Fuf.*conj(Fuf); %计算观察屏上的光强分布
figure,
subplot(1,2,1),imshow(I,[0,max(max(I))]),colormap(gray)
subplot(1,2,2),imshow(max(max(I))-I,[]),colormap(gray)
菲涅尔衍射积分的 S FFT算法。理解用S FFT算法完成菲涅尔积分原理,特别是确定观察面尺寸的原理及相应公式的来源。
需积分: 46 134 浏览量
2018-10-19
21:23:49
上传
评论 3
收藏 5KB RAR 举报
huyidu
- 粉丝: 11
- 资源: 17
最新资源
- 基于paddle搭建神经网络实现水果识别分类python源码+数据集(高分项目).zip
- 三菱plc编程口通信学习笔记.doc
- 与HIS接口解决方案...doc
- 专利技术交底书-案例模板-软件类-样板示例.doc
- C# 超简单的人脸识别库 .zip
- 实现人脸识别资源代码.zip
- 东北大学-微机原理实验报告及答案-8255并行接口.doc
- 实现人脸检测,人脸识别,人脸标记68个坐标点 人脸对齐 人脸特征测试等 同时可以自行训练人脸识别库.zip
- 基于中科视拓 seetaface6基础源码和JNI源码编译而来的项目.zip
- Python基于opencv人脸识别的考勤系统源码+代码说明(毕业设计).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈