matlab入门 — 反射率、折射率的变化
matlab的入门,程序为书本上摘抄的,注释为自己添加的。软件模拟过程为自己在matlab软件上实际模拟的,目的记录学习过程,与大家分享互相学习。
用简单的代码实现发射率,折射率的变化曲线。平面光波的入射波、反射波、折射波的电矢量可以分成两个矢量:一个平行于入射面,一个垂直于入射面,分别用p和s表示。
平面波从空气(折射率n1 =1)入射到石英玻璃中(折射率n2 = 1.45)。振幅反射率为rp、rs,振幅折射率为tp、ts。代码如下:
clc %清空内存空间
clear all %清理所有数据
close all %关闭所有的作图界面
n1 = 1,n2 = 1.45; %介质折射率
theta = 0: 0.1:90; %入射角范围0-90度,步距0.1度
a = theta *pi /180; %角度化为弧度
rp = (n2
cos(a)-n1
sqrt(1-(n1/n2
sin(a)).^2))./…
(n2
cos(a)+n1
sqrt(1-(n1/n2
sin(a)).^2)); %p分量振幅反射率
rs = (n1
cos(a)-n2
sqrt(1-(n1/n2
sin(a)).^2))./…
(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分量振幅透射率
ts = 2
n1
cos(a)./(n1
cos(a)+n2
sqrt(1-(n1/n2
sin(a)).^2)); %s分量振幅透射率
figure(1);
subplot(1,2,1); % figure划分为1×2块,在第1块创建坐标系,并返回它的句柄
plot(theta,rp,’-’,theta,rs,’–’,theta,abs(rp),’:’,…
theta,abs(rs),’-.’,‘LineWidth’,2) %作图rp,rs,|rp|,|rs|随入射角的变化曲线
legend(‘r_p’,‘r_s’,’|r_p|’,’|r_s|’) %
xlabel(’\theta_i’) %x坐标轴
ylabel(‘Amplitude’) %y坐标轴
title([‘n_1=’,num2str(n1),’,n_2=’,num2str(n2)]) %坐标系名称
axis ([0 90 -1 1]) % 设置坐标轴范围
grid on %打开网格
subplot (1,2,2); % figure划分为1×2块,在第2块创建坐标系,并返回它的句柄
plot(theta,tp,’-’,theta,ts,’–’,theta,abs(tp),’:’,…
theta,abs(ts),’-.’,‘LineWidth’,2)
legend(‘t_p’,‘t_s’,’|t_p|’,’|t_s|’)
xlabel(’\theta_i’)
ylabel(‘Amplitude’)
title([‘n_1=’,num2str(n1),’,n_2=’,num2str(n2)])
axis ([0 90 0 1])
grid on
数据如下:
执行结果: