Matlab 电磁波垂直入射、透射和反射

电磁波垂直入射、透射和反射

版本

Matlab2016a

内容

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201124232134590.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMyNTg5MTMx,size_16,color_FFFFFF,t_70#pic_center

code

e1r=1;
u1r=1;
o1=0;
e2r=4;
u2r=1;
o2=0;

e0=10^-9/(36*pi);
u0=4*pi*10^-7;

f=1e9;
T=1/f;
c=3*1e8;
L1=c/f;
w=2*pi*f;

k1=w*((e1r*e0)*(u1r*u0))^(1/2);
k2=w*((e2r*e0)*(u2r*u0))^(1/2);
L2=2*pi/k2;
Eim=100;
n1=120*pi*(u1r/e1r)^(1/2);
n2=120*pi*(u2r/e2r)^(1/2);
R=(n2-n1)/(n2+n1);
Tra=1+R;


%1

% t=0:0.01*T:5*T;
% z1=linspace(-5*L1,0,length(t));
% z2=linspace(0,5*L2,length(t));
% for t=0:0.01*T:5*T;
%     Ei=Eim*cos(w*t-k1*z1);
%     Er=Eim*R*cos(w*t+k1*z1);
%     Et=Eim*Tra*cos(w*t-k2*z2);
%     plot(z1,Ei);
%     grid on;
%     hold on;
%     plot(z1,Er);
%     hold on;
%     grid on;
%     plot(z2,Et);
%     grid on;
%     hold on;
%     hold off;
%     drawnow;
% end

%2
t=0:0.01*T:5*T;
z1=linspace(-5*L1,0,length(t));
z2=linspace(0,5*L2,length(t));
for t=0:0.005*T:5*T;
    Ei=Eim*cos(w*t-k1*z1);
    Er=Eim*R*cos(w*t+k1*z1);
    Et=Eim*Tra*cos(w*t-k2*z2);
    
    Etra=Eim*Tra*cos(w*t-k1*z1);
    Est=Eim*2*R*sin(k1*z1)*cos(w*t+1/2*pi);
    
    Esum=Etra+Est;
    plot(z1,Etra);
     axis([-1.5 0 -150 150]);
    grid on;
    hold on;
    plot(z1,Est);
     axis([-1.5 0 -150 150]);
    hold on;
    grid on;
    plot(z1,Esum);
     axis([-1.5 0 -150 150]);
    hold on;
    grid on;
    hold off;
    drawnow;
end


%3
% t=0:0.01*T:5*T;
% z1=linspace(-5*L1,0,length(t));
% z2=linspace(0,5*L2,length(t));
% for t=0:0.005*T:5*T;
%     Ei=Eim*cos(w*t-k1*z1);
%     Er=Eim*R*cos(w*t+k1*z1);
%     Et=Eim*Tra*cos(w*t-k2*z2);
%     
%     E1ts=Ei+Er;
%     E1z=Eim*(1+R*R+2*R*cos(2*k1*z1)).^(1/2);  
%     
%     plot(z1,E1z);
%     axis([-1.5 0 -150 150]);
%     grid on;
%     hold on;
%     plot(z1,E1ts);
%     axis([-1.5 0 -150 150]);
%     hold on;
%     grid on;
%     hold off;
%     drawnow;
% end


  • 10
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据提供的引用内容,我们可以使用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'); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值