MATLAB高等光学仿真——反射率,透射率变化

MATLAB高等光学仿真——反射率,透射率变化

1.subplot(m,n,p)或者subplot(m n p)。
subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表示2行图。p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。subplot(m,n,p) 是画一张图中包含若干子图,每个子图也是连续的,可将多个图画到一个平面上。
用法如下所示:

由以上我们可以看到,他是可以把好几张图画到同一figure里面。
2.stem() 函数用来画一张整图,画出来是离散函数。plot() 是连续函数,可以画一张连续的图;最一般最常用的画法。
3.abs()函数的三大功能

  1. 求实数的绝对值
  2. 求复数的模
  3. 求字符串的ASCII码值。

4.legend()函数是图例注释函数,一般用法为legend(线性1,线性2,…参数字符串…)
在这里插入图片描述
5.num2str()函数的使用方法

  1. str = num2str(A)即将数字A转换成char类型,值得注意的是A也可以是数字类型的数组。
  2. str = num2str(A, precision)
    A: 数值类型的数组或者是单个的数值
    precision:转换成字符穿保留的数字位数
    在这里插入图片描述
  3. str = num2str(A, format)
    A: 数值类型的数组或者是单个的数值
    format:指定数字转换为字符串的格式,通常’%11.4g’是默认的。 也可以指定转换为几位的字符串,不足用0填充,如%02d, %03d等。
    6.axis( [xmin xmax ymin ymax] )函数:可以设置当前坐标轴 x轴 和 y轴的限制范围。
    7.grid on表示作图加栅格。

程序如下:

clear%清空内存空间
clear all%关闭所有作图页面

n1=1,n2=1.45;
theta=0:0.1:90;%入射角范围,步距0.1°
a=theta*pi/180;%角度化为弧度

rp=(n2cos(a)-n1sqrt(1-(n1/n2sin(a)).^2))./…
(n2
cos(a)+n1sqrt(1-(n1/n2sin(a)).^2));
rs=(n1cos(a)-n2sqrt(1-(n1/n2sin(a)).^2))./…
(n1
cos(a)+n2sqrt(1-(n1/n2sin(a)).^2));
tp=2n1cos(a)./(n2cos(a)+n1sqrt(1-(n1/n2sin(a)).^2));
ts=2
n1cos(a)./(n1cos(a)+n2sqrt(1-(n1/n2sin(a)).^2));

figure(1);
subplot(1,2,1);%画第一行第一列第一个图
plot(theta,rp,’-’,theta,rs,’–’,theta,abs(rp),’:’,…
theta,abs(rs),’-.’,‘LineWidth’,2);
legend(‘r_p’,‘r_s’,‘t_p’,‘t_s’);
xlabel(’\theta_i’);
ylabel(‘AM’);
title([‘n_1=’,num2str(n1),‘n_2=’,num2str(n2)]);
axis([0,90,-1,1]);
grid on

subplot(1,2,2);%画第一行第一列第一个图
plot(theta,tp,’-’,theta,ts,’–’,theta,abs(tp),’:’,…
theta,abs(ts),’-.’,‘LineWidth’,2);
legend(‘r_p’,‘r_s’,‘t_p’,‘t_s’);
xlabel(’\theta_i’);
ylabel(‘AM’);
title([‘n_1=’,num2str(n1),‘n_2=’,num2str(n2)]);
axis([0,90,0,1]);
grid on

结果显示如下:

在这里插入图片描述

  • 7
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
熊猫型保偏光纤光栅反射透射光谱的仿真需要用到一些基本的光学公式和相关的matlab函数。下面是一个简单的仿真代码: ```matlab % 定义光栅参数 pitch = 4.5e-6; % 光栅周期 d = 0.1; % 光栅深度 n_eff = 1.5; % 光纤的等效折射率 % 定义光源参数 lambda = 1550e-9; % 光源波长 theta_i = 0; % 入射角度 phi_i = 0; % 入射方位角 % 定义计算参数 n_max = 5; % 计算阶数 theta_r = linspace(-pi/2, pi/2, 100); % 反射角度范围 theta_t = asin(sin(theta_r)/n_eff); % 折射角度 % 计算反射和透射的振幅反射率透射率 R = zeros(size(theta_r)); T = zeros(size(theta_r)); for n = 1:n_max m = n-1; b_n = 2*d/(n*pi); A_n = 2*b_n/(b_n^2 + (2*pi/pitch*m)^2); R_n = ((-1)^n)*(A_n^2)*sin(n*(pi/2 - theta_i))*sin(n*(pi/2 - theta_r)); T_n = (4*n_eff*cos(theta_i))/(n_eff*cos(theta_i) + n*cos(theta_t)).^2*(A_n^2)*sin(n*(pi/2 - theta_i))*sin(n*(pi/2 - theta_t)); R = R + R_n; T = T + T_n; end % 绘制反射和透射的光谱 figure; plot(theta_r*180/pi, abs(R).^2, 'r-', 'LineWidth', 2); hold on; plot(theta_r*180/pi, abs(T).^2, 'b-', 'LineWidth', 2); grid on; xlabel('反射角度(度)'); ylabel('反射和透射光强'); legend('反射', '透射'); ``` 这个代码中,我们首先定义了光栅的周期、深度和光纤的等效折射率等参数,然后定义了入射光的波长、入射角度和方位角等参数。接着,我们定义了计算的阶数和反射角度的范围,并计算了每个阶数对应的振幅反射率透射率。最后,我们绘制了反射和透射的光谱图。 注意,这只是一个简单的仿真代码,实际的仿真可能需要更多的参数和计算步骤。另外,由于熊猫型保偏光纤光栅的结构比较复杂,所以需要更加精细的仿真模型才能准确地模拟其光学性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值