基于Matlab模拟菲涅尔公式

简介: 基于Matlab模拟菲涅尔公式

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

   此代码用于进行物理光学的计算机仿真。

   其主要功能为:

(1) 动态模拟电磁波在空间中的传播;

(2) 对菲涅尔公式进行分析(主要是绘制反/透射系数、反/透射率、全反射时的相位跃变随入射角变化而变化的图像);

(3) 对不同种类的材料进行柯西公式拟合,绘制色散曲线图;

⛄ 代码

function Fresnel_1 (n1,n2)

基于Matlab模拟菲涅尔公式%{

此函数用于绘制反射系数(rs,rp)/透射系数(ts,tp)随入射角变化而变化的图像

功能:

输入界面两侧介质折射率来绘制ts、tp、rs、tp随入射角变化的图像;并在相应位置

标注半波损失、布儒斯特角、临界角等关键量

理量:

n1、n2:界面两侧介质折射率

theta:入射角;

theta_B:布儒斯特角;

theta_C:临界角;

rs:s波反射系数;

rp:p波反射系数;

ts:s波透射系数;

tp:p波透射系数;

 

%}


%% 清理窗口:


close all;


n1=1;

n2=1.5;

%% 初始数据:

theta = 0:0.1:90;     % 设置入射角范围0-90度

a = theta*pi/180;     % 角度转化为弧度

[~,n] = size(a);      %计算矩阵a大小便于循环



%% 反射系数与透射系数公式输入:

% 首先判断光从波疏介质射向波密介质还是从波密介质射向波疏介质:

if n1 < n2    

   

% 若从波疏介质射往波密介质,其反射与透射系数一直为实数:

rs = (n1*cos(a)-n2*sqrt(1-(n1/n2*sin(a)).^2))./(n1*cos(a)+n2*sqrt(1-(n1/ ...

   n2*sin(a)).^2));                                         % s波反射系数

rp = (n2*cos(a)-n1*sqrt(1-(n1/n2*sin(a)).^2))./(n2*cos(a)+n1*sqrt(1-(n1/ ...

   n2*sin(a)).^2));                                         % p波反射系数

ts = 2*n1*cos(a)./(n1*cos(a)+n2*sqrt(1-(n1/n2*sin(a)).^2));  % s波透射系数

tp = 2*n1*cos(a)./(n2*cos(a)+n1*sqrt(1-(n1/n2*sin(a)).^2));  % p波透射系数


else if n1 > n2


% 若从波密介质射往波疏介质,需将其分段:

       C = asin(n2/n1);        % 计算临界角

       theta_C = C*180/pi;     % 弧度转化为角度

       for i=1:n

           if a(i) < C  


               % 当入射角小于临界角,为实数:

               rs(i) = (n1*cos(a(i))-n2*sqrt(1-(n1/n2*sin(a(i))).^2))./(n1*cos(a(i))+n2*sqrt(1-(n1/ ...

                     n2*sin(a(i))).^2));                    % s波反射系数

               rp(i) = (n2*cos(a(i))-n1*sqrt(1-(n1/n2*sin(a(i))).^2))./(n2*cos(a(i))+n1*sqrt(1-(n1/ ...

                     n2*sin(a(i))).^2));                    % p波反射系数

               ts(i) = 2*n1*cos(a(i))./(n1*cos(a(i))+n2*sqrt(1-(n1/n2*sin(a(i))).^2));  % s波透射系数

               tp(i) = 2*n1*cos(a(i))./(n2*cos(a(i))+n1*sqrt(1-(n1/n2*sin(a(i))).^2));  % p波透射系数

           else


               % 当入射角小于临界角,需计算其模值:

               rs(i) = 1;

               rp(i) = 1;

               ts(i) = 2*n1;

               tp(i) = 2*n1;

           end

       end

end

end

       


%% 图像绘制:

plot(theta,rs,theta,rp,theta,ts,theta,tp,'Linewidth',1);

axis([0 90 -1 1]);              % 设置区间

title(['入射/透射系数随入射角的变化 ; ','n_1 = ',num2str(n1),', n_2 = ',num2str(n2)]);

xlabel('\theta_1');

ylabel('coefficient');

legend('r_s','r_p','t_s','t_p');



%% 布儒斯特角的标注:

B = atan(n2/n1);                % 求解布儒斯特角

theta_B = B*180/pi;             % 角度转化为弧度

line([theta_B,theta_B],[-1,0],'color','black','LineStyle','--', ...

   'Linewidth',0.01,'HandleVisibility','off')

line([0,90],[0,0],'color','black','LineStyle','--','Linewidth',0.01, ...

   'HandleVisibility','off')   % 绘制两条直线对布儒斯特角的位置定标

text(theta_B,-1,'\theta_B');    % 在x坐标轴上标注布儒斯特角



%% 对半波损失/临界角进行标注:

% 首先判断光从波疏介质射向波密介质还是从波密介质射向波疏介质:

if n1 < n2    


   % 若从波疏介质射往波密介质,则将发生半波损失,将其标注在[0,0]处

   text(0,0,'Half-wave Loss','FontSize',15);


else if n1 > n2


       % 若从波密介质射往波疏介质,则将发生全反射现象,下面对其进行标注:


       axis([0 90 -1 2*n1]); % 重新选择作图区间

       C = asin(n2/n1);      % 计算临界角

       theta_C = C*180/pi;   % 弧度转化为角度


       line([0,90],[1,1],'color','black','LineStyle','--','Linewidth', ...

           0.01,'HandleVisibility','off') % 绘制两条直线对临界角的位置定标

       line([theta_C,theta_C],[-1,2*n1],'color','black','LineStyle', ...

           '--','Linewidth',0.01,'HandleVisibility','off')


       text(theta_C,-1,'\theta_C');   % 在x坐标轴上标注临界角

       

       line([0,theta_C],[2*n2,2*n2],'color','black','LineStyle','--', ...

           'Linewidth',0.01,'HandleVisibility','off')   % 定标ts模值

end

end

end

⛄ 运行结果

⛄ 参考文献

[1] 王莉, 杨会静, 段芳芳. 用MATLAB模拟菲涅耳直边衍射[J]. 唐山师范学院学报, 2008, 30(005):131-132.

[2] 王艳. 菲涅耳圆屏衍射的Matlab模拟[J]. 长治学院学报, 2021, 38(5):6.

[3] 仲志国, 李硕, 李婧,等. 基于Matlab的菲涅尔直边衍射仿真与GUI设计[J]. 南阳师范学院学报, 2012, 11(12):3.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料



相关文章
基于MATLAB的麻雀搜索算法SSA代码解释(对照论文公式)
基于MATLAB的麻雀搜索算法SSA代码解释(对照论文公式)
【MATLAB】数值运算 ( 数值运算示例 | 三角函数 | 指数运算 | 对数运算 | 常用的数学公式对应函数 )
【MATLAB】数值运算 ( 数值运算示例 | 三角函数 | 指数运算 | 对数运算 | 常用的数学公式对应函数 )
209 0
【MATLAB】数值运算 ( 数值运算示例 | 三角函数 | 指数运算 | 对数运算 | 常用的数学公式对应函数 )
Matlab验证公式取值范围
一、问题来源   t = 2xy/(x+y);融合相似度和信任度,我需要验证值域是不是[0,1]; 二、求解 clear all; clc; %linspace(0:1,0.1)这样是错的,第三个参数是段数,不是间距,应该是11,分成11分 x = 0:0.
940 0
|
1月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
116 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
1月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
91 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
1月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
66 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
4月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
4月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
4月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)

热门文章

最新文章