MATLAB----光学之分量振幅反射率和分量振幅透射率

286 篇文章 31 订阅
236 篇文章 15 订阅

在这里插入图片描述
在这里插入图片描述

clear;             %清空内存空间
disp('请输入介质折射率n1和n2')
n1=input('n1='); %接受键盘任意输入合适的折射率n1
n2=input('n2='); %接受键盘任意输入合适的折射率n2
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);  %作图rp、rs、|rp||rs|随入射角的变化曲线
plot(theta,rp,'-',theta,rs,'--',theta,abs(rp),':',...
    theta,abs(rs),'-.','LineWidth',2);
legend('rp','rs','|rp|','|rs|');
xlabel('入射角\theta_i');
ylabel('振幅');
title(['n1=',num2str(n1),',n2=',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('tp','ts','|tp|','|ts|');
xlabel('入射角\theta_i');
ylabel('振幅');
title(['n1=',num2str(n1),',n2=',num2str(n2),'时透射系数随入射角的变化曲线']);
if n1<n2
axis([0 90 0 1]);
else
axis([0 90 0 3.5]);
end
grid on;```

```handlebars
>> li_3_1_1
请输入介质折射率n1和n2
n1=1
n2=2
li_3_1_1
请输入介质折射率n1和n2
n1=3
n2=4
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,我们可以使用Matlab中的相关函数公式来模拟电磁波的反射和透射现象。具体步骤如下: 1.定义反射系数和透射系数,其中反射系数和透射系数的和等于1。 2.使用Matlab中的相关函数公式,通过for循环对函数进行绘制,模拟电磁波在不同介质中的传播情况。 3.根据反射系数和透射系数,计算反射波和透射波的振幅。 4.使用Matlab中的plot函数,将反射波和透射波的振幅绘制出来,从而模拟电磁波的反射和透射现象。 下面是一个Matlab代码的例子,用于模拟电磁波的反射和透射现象: ```matlab % 定义反射系数和透射系数 n1 = 1; % 真空中的折射率 n2 = 1.5; % 介质中的折射率 theta1 = 0; % 入射角度 theta2 = asin(n1/n2*sin(theta1)); % 折射角度 r = (n1*cos(theta1)-n2*cos(theta2))/(n1*cos(theta1)+n2*cos(theta2)); % 反射系数 t = 1 + r; % 透射系数 % 模拟电磁波在不同介质中的传播情况 x = linspace(-10, 10, 1000); y1 = exp(1i*(2*pi*n1*x*cos(theta1))); % 入射波 y2 = exp(1i*(2*pi*n2*x*cos(theta2))); % 折射波 y3 = r*exp(1i*(2*pi*n1*x*cos(theta1))); % 反射波 y4 = t*exp(1i*(2*pi*n2*x*cos(theta2))); % 透射波 % 计算反射波和透射波的振幅 A1 = abs(y1); A2 = abs(y2); A3 = abs(y3); A4 = abs(y4); % 绘制反射波和透射波的振幅 plot(x, A3, 'r', x, A4, 'b'); xlabel('x'); ylabel('Amplitude'); title('Reflection and Transmission of Electromagnetic Waves'); legend('Reflection Wave', 'Transmission Wave'); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值