MATLAB角谱传播实现!FFT2光斑实际尺寸是多少?
作者B站ID“大洋咩咩咩咩”,投稿有对该代码的讲解视频(角谱传播),如果有那个地方有疑问可以去视频中寻找答案~
文章及代码解决三个问题:
夫琅禾费衍射(理想凸透镜成像)做FFT2后,仿真光斑的实际尺寸确定?
光场在自由空间传播一定距离z后的光斑什么样,怎么用FFT2做?
如何仿真泽尼克多项式光斑,例如慧差光斑,以及实际尺寸?
clc,clear
N_obj_sam=512; %采样频率
D=2.5;%% 圆孔径mm
plotW=4;%% 绘图宽度mm
z=600; %% 衍射距离 mm
lambda=632.8e-6; %% 波长mm
N=6;%% 补零数
%============================================
%物光场plotW2=plotW/2;R=D/2;Obj_x=linspace(-plotW2,plotW2,N_obj_sam);[Obj_x,Obj_y]=meshgrid(Obj_x,Obj_x);Obj_A2=zeros(N_obj_sam);Obj_P=Obj_A2;Obj_A2((Obj_x.^2+Obj_y.^2)<=R^2)=1;
Obj_E=Obj_A2.*exp(1i*Obj_P);
%============================================
%物光场补零Obj_Ezf=F_ZerosFilling(Obj_E,N_obj_sam,N*N_obj_sam);A=fftshift(fft2(fftshift(Obj_Ezf)));[m,n]=size(A);%% 角谱的规格dtheta=lambda/(N*plotW);%% 角谱角分辨率A_x=(-m/2:m/2-1)*dtheta;A_y=(-n/2:n/2-1)*dtheta;% 角谱的角分布[A_x,A_y]=meshgrid(A_x,A_y);%% 构造角谱
%角谱传播k=2*pi/lambda;%波矢量H=exp(1i*k*z*sqrt(1-(A_x.^2+A_y.^2)));%自由空间光学传递函数B=A.*H;
%逆变换成像传播Img_Ezf=fftshift(ifft2(fftshift(B)));Img_E=F_UnZerosFilling(Img_Ezf,N_obj_sam*2);
subplot(231)F_2DPlot(Obj_A2,plotW2,'mm','mm',strcat('物透过率 R=',num2str(R),'mm'))
subplot(232)F_2DPlot(Obj_P,plotW2,'mm','mm',strcat('物相位 \lambda=',num2str(lambda*10^6),'nm'))
subplot(233)x_plot_obj=linspace(-plotW2,plotW2,N_obj_sam);plot(x_plot_obj,Obj_A2(N_obj_sam/2,:),'color',[0 0 0],'LineWidth',3)xlabel('mm');ylabel('I');xlim([-plotW2 plotW2]);title(strcat('通光孔径 D=',num2str(D),'mm'))
subplot(234)
Img_A2=F_NorOne(abs(Img_E).^2);F_2DPlot(Img_A2,plotW,'mm','mm',strcat('像面光斑 z=',num2str(z),'mm'))
subplot(235)F_2DPlot(angle(Img_E),plotW,'mm','mm','像面相位')
subplot(236)x_plot_img=linspace(-plotW,plotW,N_obj_sam*2);plot(x_plot_img,Img_A2(N_obj_sam,:),'color',[0 0 0],'LineWidth',3)xlabel('mm');ylabel('I');xlim([-plotW plotW]);title(strcat('艾里斑半径理论值 R_A_i_r_y= 1.22\lambdaz/D=',num2str(1.22*lambda*z/D),'mm'))function F_2DPlot(z,k,xl,yl,tl)
%本函数目的:绘制3维曲面图,去边框,带标题和label
%输入变量:k为放缩坐标轴的因子
image([-1*k 1*k],[-1*k 1*k],z,'CDataMapping','scaled')
xlabel(xl);
ylabel(yl);
title(tl);
axis xy
axis equal
xlim([-1*k 1*k]);
ylim([-1*k 1*k]);
view([0 90]);
endfunction MFill=F_ZerosFilling(MOnes,aOnes_F,NumPixcel)
%子函数序号#7
MFill=zeros(NumPixcel);
[aOnes_T,~]=size(MOnes);%实际输入的波前函数,可以是366或367
StartP=(NumPixcel-aOnes_F)/2;%获取规格差距
MFill(StartP+1:StartP+aOnes_T,StartP+1:StartP+aOnes_T)=MOnes;
endfunction O_A2_Plot=F_UnZerosFilling(O_A2,Samp_p)
[a,b]=size(O_A2);
O_A2_Plot=O_A2(a/2-Samp_p/2+1:a/2+Samp_p/2,b/2-Samp_p/2+1:b/2+Samp_p/2);
endfunction A_n=F_NorOne(A)
mA=min(A(:));
A=A-mA;
MA=max(A(:));
A_n=A/MA;
end
MATLAB角谱传播实现!FFT2光斑实际尺寸是多少?相关推荐
- matlab 角谱传播,复振幅分布的角谱及角谱的传播.ppt
复振幅分布的角谱及角谱的传播.ppt 光波的数学描述平面波的空间频率-信息光学中最基本的概念 光波的数学描述平面波的空间频率-信息光学中最基本的概念 §2-2 复振幅分布的角谱及角谱的传播 1.复振幅 ...
- 角谱传播法matlab模拟,角谱法分析高斯光
矢量高斯光束传播分析和近轴球面近似有 效性 卡尔G.陈,保罗T.康科拉,胡安费雷拉,拉尔夫·K.海尔曼,和Mark L.影子城堡 麻省理工大学,剑桥,马萨诸塞州02139 收稿2001年3月5日;五月 ...
- 图像处理——相位恢复(GS,TIE,改进型角谱迭代法)(已更新代码)
利用GS,TIE,改进型角谱迭代算法进行相位恢复 角谱传播理论 角谱传播理论可以翻阅傅里叶光学的书,就能找到定量分析的计算公式,可以分析某个平面的角谱垂直传播到另外一个平面的角谱,得到其振幅与相位信息 ...
- 浅谈光波近场传播表述的方式 ——角谱法
光波近场传播的三种表述方式 角谱法 卷积 球面波近似 主要介绍最常用的角谱法,也是目前最好的方法. 利用角谱法模拟激光光波的传输,角谱法是描述衍射的一种替代变换方法,给定在z=0的平面Σ0的电场E0( ...
- 角谱法 matlab,一种基于部分角谱法的快速全息图生成和高质量再现方法与流程...
本发明涉及一种全息显示领域,特别是全息图的生成和再现方法. 背景技术: 全息显示能提供给观看者需要的所有信息,因此被公认为最有前景的三维显示技术.但是,目前的全息显示技术依然有一些问题亟待解决.其中之 ...
- 【声传播】——角谱理论、模式理论及三维傅里叶变换
序: 感觉三者在一定程度上有相似性,故将其整理至此文 瞬态声波方程与稳态声波方程 瞬态声波方程 概念:描述时域空间域(波动方程) ∇2p=1c02∂2p∂t2\nabla^2 p=\frac{1}{c ...
- matlab角点坐标获取,MatLab角点检测(harris经典程序) | 学步园
这是源博客的出处,鄙人转过来是为了更好的保存!供大家一起学习!已将原始的博客的文章的位置附在上面! 至于代码的完整性和可运行性需要大家去自己考量! %MatLab角点检测程序harris. ori_i ...
- matlab光波耦合光栅,均匀布拉格光栅的原理及MATLAB反射谱仿真
精品文档 . 1欢迎下载 均匀布拉格光栅的原理及MATLAB 反射谱仿真 张睿 一. 前言 光纤光栅是纤芯折射率受到周期性微扰而形成的一种全光纤无源器件,自问世以来,由 于其与光纤通信系统兼容.体积小 ...
- matlab角接触球轴承和圆锥滚子轴承轴承寿命校核
** matlab角接触球轴承和圆锥滚子轴承轴承寿命校核 ** 自己修改轴承所受的力,以及受力方向等 Fr1=1000; %轴承1上的径向力,单位N%%%%%%%%%%%%%%%%%%%%%%%%%% ...
最新文章
- 安卓开发_求好评功能
- Android的代码都得自己一个个敲一遍吗?
- c#分布式ID生成器
- HiveSQL常用数据处理语句
- php读取txt插入数据库,PHP读取TXT文件插入数据库
- FFmpeg源代码:avcodec_send_packet
- php memcache测试,PHP 监控memcache
- d3 制作条形图_停止制作常见的坏条形图的5个简单技巧
- android roboguice2,Android快速开发框架 roboguice
- 思科服务器 vmware虚拟多少个hba卡,利用Cisco UCS 管理虚拟机网络(上)
- 【java】java 并发编程 CopyOnWriteArrayList
- 如何通过 Web 实现防御木马、病毒...... | 原力计划
- 洛谷P2234 [HNOI2002]营业额统计 set简易解法
- Javascript高级程序设计——函数声明与函数表达式的区别
- 一个关于mahout0.5放置位置的错误,,,
- 基本地图加载完整示例
- [数据结构] 树链剖分
- python怎么过滤标点符号大全_一行Python代码过滤标点符号等特殊字符
- 感冒发烧都能报?小额医疗险了解下!
- 积分?商城?积分商城你了解多少?