吾爱光设

 找回密码
 注册
会员须知
会员须知
实用帮助
实用帮助
查看: 2258|回复: 5

求圆柱坐标系下,菲涅尔-弗朗和费衍射公式得详细推导

[复制链接]
  • TA的每日心情

    2023-5-17 23:09
  • 签到天数: 37 天

    [LV.5]常住居民I

    10

    主题

    14

    回帖

    0

    积分

    小白

    积分
    0
    发表于 2022-5-8 17:30 | 显示全部楼层 |阅读模式
    求4.87式更详细的推导
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情

    2023-5-17 23:09
  • 签到天数: 37 天

    [LV.5]常住居民I

    10

    主题

    14

    回帖

    0

    积分

    小白

    积分
    0
     楼主| 发表于 2022-5-8 17:32 | 显示全部楼层
    如图所示,公式

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?注册

    ×
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-11-6 08:23
  • 签到天数: 274 天

    [LV.8]以坛为家I

    5

    主题

    48

    回帖

    5

    积分

    小白

    积分
    5
    发表于 2022-5-9 17:13 | 显示全部楼层

    使用透镜阵列进行

    1.我之前为了计算方便,针对这种光纤圆孔衍射写了一个matlab gui,如图所示。
    2.关于圆柱坐标系衍射计算,需要注意的就是数值计算可能会涉及的采样问题,不能直接使用FFT,这个这个需要满足线性空不变条件。很明显针对圆柱坐标系无法满足这样条件;
    3.针对圆柱坐标系的光场传输计算,需要使用的是贝瑟儿变换。
    4.其次光纤孔不一定是纯粹的圆孔,使用椭圆孔的计算可能会更好一些,这个可以参见我发的代码。
    附上代码:
    clear
    clc
    PlotCos = ['Num = get(hs,"Value");','set(heNum,"String",num2str(Num));'];


    hf = figure('Position',[200 200 600 400],'Name','椭圆孔夫琅禾费衍射','NumberTitle','off');

    ha = axes('Position',[0.4 0.1 0.5 0.7],'Box','on');
    % ------- 定义初始参数 ---------
    lambda = 632.8;
    R=1.0e3;
    a=1;
    b = 2;
    sample = 501;
    x = linspace(-1e-6,1e-6,sample);
    y = linspace(-1e-6,1e-6,sample);

    %% ------- 编辑波长的可编辑文本框 和 静态文本 ---------
    % ---------- 显示可编辑文本框 --------
    varX_wavelength = [ 'NumStr = get(heNum_wavelength,"String");',...
        'Num = str2num(NumStr);','x = 0:0.1:Num*pi;'];

    heNum_wavelength = uicontrol(hf,'Style','edit','Position',[50 320 100 30],'String','632.8','CallBack',varX_wavelength);

    % --------- 静态文本 ------------
    htWavelength = uicontrol(hf,'Style','text','Position',[50 350 100 30],'String','Wavelength(nm)');

    %% ------- 编辑 孔径大小 的可编辑文本框 和 静态文本 ---------
    % ---------- 显示可编辑文本框 --------
    varX_aperture_a = [ 'NumStr = get(heNum_thickness_a,"String");',...
        'Num = str2num(NumStr);','x = 0:0.1:Num*pi;'];

    heNum_thickness_a = uicontrol(hf,'Style','edit','Position',[50 240 100 30],'String','1','CallBack',varX_aperture_a);

    % --------- 静态文本 ------------
    htthickness_a = uicontrol(hf,'Style','text','Position',[50 270 100 30],'String','Half shaft length a(um)');

    %% ------- 编辑 孔径大小 的可编辑文本框 和 静态文本 ---------
    % ---------- 显示可编辑文本框 --------
    varX_aperture_b = [ 'NumStr = get(heNum_thickness_b,"String");',...
        'Num = str2num(NumStr);','x = 0:0.1:Num*pi;'];

    heNum_thickness_b = uicontrol(hf,'Style','edit','Position',[50 160 100 30],'String','2','CallBack',varX_aperture_b);

    % --------- 静态文本 ------------
    htthickness_b = uicontrol(hf,'Style','text','Position',[50 190 100 30],'String','Half shaft length b(um)');

    %% ------- 编辑 衍射屏到达观察屏的距离 的可编辑文本框 和 静态文本 ---------
    % ---------- 显示可编辑文本框 --------
    varX_distance = [ 'NumStr = get(heNum_distance,"String");',...
        'Num = str2num(NumStr);','x = 0:0.1:Num*pi;'];

    heNum_distance = uicontrol(hf,'Style','edit','Position',[50 80 100 30],'String','1000','CallBack',varX_distance);

    % --------- 静态文本 ------------
    htdistance = uicontrol(hf,'Style','text','Position',[50 110 100 30],'String','Focus length(um)');


    % ----------- 等倾干涉条纹显示 -------------
    hb_equal_inclination = uicontrol(hf,...
        'Style','pushbutton','Position',[320,340,150,30],...
        'String','Fraunhofer Diffraction','CallBack',['subplot(ha);','a = str2double(get(heNum_thickness_a,"String"));','lambda=str2double(get(heNum_wavelength,"String"));',...
        'b = str2double(get(heNum_thickness_b,"String"));','R = str2double(get(heNum_distance,"String"));','h1=imshow(eliptic_diffraction(lambda,a,b,R));']);

    hbClose = uicontrol(hf,'Style','pushbutton','Position',[50 20 100 30],'String','退出','CallBack','close(hf)');


    %% -------------------------------------------------------------------------------------------------------------------------------------
    function I = eliptic_diffraction(lambda,a,b,R)
    %ELIPTIC_DIFFRACTION 此处显示有关此函数的摘要
    %   此处显示详细说明
    %  -------------------------------------------
    %  ----- 此函数主要用于 显示圆孔衍射条纹 ------
    %  ----- lambda 表示波长 -------
    %  ----- x 和 y 用于构成观察面 ----
    %  ----- a 表示圆孔的半径 ----------
    %  ----- R 表示观察屏到衍射屏的距离 ------------
    %  ----------------------------------
    lambda = lambda*1e-9;
    a = a*1e-6;
    b = b*1e-6;
    R = R*1e-6;
    k=(2*pi)/lambda; % wavelength of light in vaccuum
    Io=100.0; % relative intensity

    % ---------- 设置网格面 --------
    Y=(-0.25e-2:1e-5:0.25e-2); Z=Y ; % coordinates of the screen
    [x,y] = meshgrid(Y,Z);

    % ------- 进行坐标系转换 ---------
    [beta,rho] = cart2pol(x,y);

    % --------- 坐标系转换 ----------
    I(1:length(Y),1:length(Z))=0;
    ampli(1:length(Y),1:length(Z)) = 0;
    % calculating diffracted intensity
    for i=1:length(Y)
        for j=1:length(Z)
            v = k*rho(i,j)/R*sqrt(a^2*(cos(beta(i,j)))^2+(b*sin(beta(i,j)))^2);
            ampli(i,j) = besselj(1,v)/v;
            I(i,j) = Io*(besselj(1,v)/v)^2;
        end
    end

    end


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?注册

    ×
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情

    2023-5-17 23:09
  • 签到天数: 37 天

    [LV.5]常住居民I

    10

    主题

    14

    回帖

    0

    积分

    小白

    积分
    0
     楼主| 发表于 2022-5-9 19:09 | 显示全部楼层
    chunqiulei 发表于 2022-5-9 17:13
    1.我之前为了计算方便,针对这种光纤圆孔衍射写了一个matlab gui,如图所示。
    2.关于圆柱坐标系衍射计算, ...

    你好,首先谢谢你的回复指导。看了代码,观察屏衍射场的积分不知道是用的什么理论公式呢?
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情

    2023-5-17 23:09
  • 签到天数: 37 天

    [LV.5]常住居民I

    10

    主题

    14

    回帖

    0

    积分

    小白

    积分
    0
     楼主| 发表于 2022-5-9 19:15 | 显示全部楼层
    chunqiulei 发表于 2022-5-9 17:13
    1.我之前为了计算方便,针对这种光纤圆孔衍射写了一个matlab gui,如图所示。
    2.关于圆柱坐标系衍射计算, ...

    对于第四点,可以请教下为什么椭圆更好吗?
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-10-14 20:00
  • 签到天数: 271 天

    [LV.8]以坛为家I

    15

    主题

    101

    回帖

    3

    积分

    小白

    积分
    3
    发表于 2024-6-9 12:35 | 显示全部楼层
    chunqiulei 发表于 2022-5-9 17:13
    1.我之前为了计算方便,针对这种光纤圆孔衍射写了一个matlab gui,如图所示。
    2.关于圆柱坐标系衍射计算, ...

    您好!

    这个公式里面的j是怎么定义的,我代入公式报错显示'j'没有被定义。
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    联系我们|本论坛只支持PC端注册|手机版|小黑屋|吾爱光设 ( 粤ICP备15067533号 )

    GMT+8, 2024-11-23 04:21 , Processed in 0.171875 second(s), 23 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表