基于Matlab的电磁场与波“电磁波的入射、反射、透射”仿真—(可实现波形入射反射过程的仿真)
写在前面,本仿真与其他大多数仿真的改进点在于,本仿真实现了对于波形运动情况的仿真,并将大部分情况融合成为一个函数文件,可以通过改变参数实现不同的仿真(就是文章最后那堆代码)
一、正入射的基础驻波实现
1.原理:
通过Matlab中的相关函数公式,仿真课本上电磁波的正入射过程中驻波的形成。代码中主要通过for循环对函数进行绘制
此代码与类似代码实现的效果并无不同
2.代码
w = 10; %角频率,可以改变周期和震荡速录
x = -3:0.02:1; %x轴坐标取样,可以改变波的长度
po1=0; %用于入射波的数据点计数
po2=0; %用于反射波和驻波的数据点计数beta0 = w/2;
w0 = w*0.01;for t=1:500 %循环次数,即动画持续时间Ei = cos(w0*t-beta0*x-pi/3); %计算入射波Eo = cos(w0*t+beta0*x-pi/2); %计算反射波Ez = Ei + Eo; %计算合成驻波plot([-3,1],[0,0],'k','LineWidth',2); %画y参考轴线,不画的话图像会出问题hold on;plot([1,1],[-3,3],'k','LineWidth',2); %画x参考轴线axis([-3,3,-3,3]); %固定视角plot(x, Ei,'b','LineWidth',2); %绘制入射波plot(x, Eo,'r','LineWidth',2); %绘制反射波plot(x, Ez,'k','LineWidth',2); %绘制驻波xlabel('x','FontSize',10) %x标签ylabel('y','FontSize',10) %z标签hold off;title('均匀平面波正入射理想导体','FontSize',10,'color','k');text(1.5,0,'\it理想导体','FontSize',20);text(-2,2.2,'\itE_y','FontSize',20);drawnow; %更新画面,形成动画
End
3.仿真效果图
二、正入射理想导体
1.原理:
在上一个基础驻波的形成的基础上,加上了一个波形传播的模拟函数,其主要思想是在循环中嵌套进多层if条件判断,对于没有传播到的位点赋值为零,调整好初相位后即可实现对于波运动状态的模拟。
2.代码
w = 10; %角频率,可以改变周期和震荡速录
x = -3:0.02:1; %x轴坐标取样,可以改变波的长度
po1=0; %用于入射波的数据点计数
po2=0; %用于反射波和驻波的数据点计数beta0 = w/2;
w0 = w*0.01;for t=1:1000 %循环次数,即动画持续时间Ei = cos(w0*t-beta0*x-pi/3); %计算入射波Eo = cos(w0*t+beta0*x-pi/2); %计算反射波Ez = Ei + Eo; %计算合成驻波plot([-3,1],[0,0],'k','LineWidth',2); %画y参考轴线,不画的话图像会出问题hold on;plot([1,1],[-3,3],'k','LineWidth',2); %画x参考轴线axis([-3,3,-3,3]); %固定视角if t<length(x)if po1<length(x)po1=po1+1;for a=t:length(x)Ei(a)=0; endendend %通过循环将入射波的传播方式模拟出来,没传到的地方置零plot(x, Ei,'b','LineWidth',2); %绘制入射波if t>length(x)if po2<length(x)po2=po2+1;for b=1:length(x)-po2Eo(b)=0;Ez(b)=0;endend plot(x, Eo,'r','LineWidth',2); %绘制反射波plot(x, Ez,'k','LineWidth',2); %绘制驻波end%通过循环将反射波和驻波的传播方式模拟出来,没传到的地方置零xlabel('x','FontSize',10)%x标签ylabel('y','FontSize',10) %z标签hold off;title('均匀平面波正入射理想导体','FontSize',10,'color','k');text(1.5,0,'\it理想导体','FontSize',20);text(-2,2.2,'\itE_y','FontSize',20);drawnow; %更新画面,形成动画
End
3.仿真效果图
三、正入射理想介质
1.原理:
在上一个基础驻波的形成的基础上,加上了一个波形传播的模拟函数,其主要思想是在循环中嵌套进多层if条件判断,对于没有传播到的位点赋值为零,调整好初相位后即可实现对于波运动状态的模拟。
2.代码
w = 10; %角频率,可以改变周期和震荡速录
x = -3:0.02:0; %x轴坐标取样,可以改变波的长度
y = 0:0.02/3:3;
po1=0; %用于入射波的数据点计数
po2=0; %用于反射波和驻波的数据点计数
po3=0;beta0 = w/2;
w0 = w*0.01;
ur = 9;
er = 1; %设置已知量beta1 = sqrt(ur*er)*beta0;
F = 1/2; %发射系数
T = 3/2; %折射系数for t=1:1000 %循环次数,即动画持续时间Ei = cos(w0*t-beta0*x-pi/3); %计算入射波Eo = 0.5*cos(w0*t+beta0*x-pi/3); %计算反射波,折射系数为0.5Et = 1.5*cos(w0*t-beta1*y-pi/3); %计算透射波,折射系数为1.5 Ez = Ei + Eo; %计算合成驻波plot([-3,3],[0,0],'k','LineWidth',2); %画y参考轴线,不画的话图像会出问题hold on;plot([0,0],[-3,3],'k','LineWidth',2); %画x参考轴线axis([-3,3,-3,3]); %固定视角if t<length(x)if po1<length(x)po1=po1+1;for a=t:length(x)Ei(a)=0; endendend %通过循环将入射波的传播方式模拟出来,没传到的地方置零plot(x, Ei,'b','LineWidth',1); %绘制入射波if t>length(x)if po2<length(x)po2=po2+1;for b=1:length(x)-po2Eo(b)=0;Ez(b)=0;endendplot(x, Eo,'r','LineWidth',1); %绘制反射波plot(x, Ez,'k','LineWidth',2); %绘制合成驻波if po3<length(y)po3=po3+1;for c=t-length(x):length(y)Et(c)=0; endend plot(y, Et,'k','LineWidth',2); %绘制透射波 endxlabel('x','FontSize',10)%x标签ylabel('y','FontSize',10) %z标签hold off;title('均匀平面波正入射理想导体','FontSize',10,'color','k');text(1,2,'\it理想介质','FontSize',20);text(-2,2.2,'\itE_y','FontSize',20);drawnow; %更新画面,形成动画
End
3.仿真效果图
四、程序代码
1.原理:
在以上三个代码的基础上,我重新改善了代码结构,将两个代码融合,并将波形的显示长度,运行速度,以及两种媒质的三个电磁常量设置为程序的变量。通过嵌套多层判断实现对于不同媒质电导率(0或无穷大)的判断,判断是否为理想介质还是理想导体,进而绘制出不同的波形。
2.代码
% %lxjz_prj是一个用来实现不同参数的两种理想介质之间的电磁波传播的仿真函数
% %为--周一七八节第四组--原创函数,如有雷同,纯属巧合
% %以下部分为设置参数建议,函数较为简陋,还请手动调试参数
% %function lxjz_prj(sudu,bo,ur1,er1,ur2,er2)
% sudu = 0.04; %sudu用于控制图像速度,且与图像的分辨率有关,建议大小为0.01~0.05
% bo =3; %bo用于控制图像显示的波长,建议大小为1~5
% % 请注意:sudu*bo最好小一些,否则会导致图像分辨率过低,出现图像bug
% ur1 = 4; %设置已知量
% er1 = 9;
% % gama1 = 0;
% ur2 = 9;
% er2 = 4;
% gama2 = 0;
function zrs(sudu,bo,ur1,er1,ur2,er2,gama2)w = 2*pi; %角频率,可以改变周期和震荡速录,f = 1, v0=3
k0 = w/bo;
w0 = w*sudu; %后面乘上的数要和x,y的分度保持一致,用于控制图像向右的速度
gen1 = sqrt(ur1*er1);
gen2 = sqrt(ur2*er2); %用于求β
gen11 = sqrt(ur1/er1);
gen22 = sqrt(ur2/er2);x = -3:sudu*bo/gen1:0; %x轴坐标取样,可以改变波的长度
y = 0:sudu*bo/gen2:3;
po1=0; %用于入射波的数据点计数
po2=0; %用于反射波和驻波的数据点计数
po3=0;k1 = gen1*k0; %即β1
k2 = gen2*k0; %即β2
R = (gen22-gen11)/(gen22+gen11); %反射系数
T = 2*gen22/(gen22+gen11); %透射系数
if gama2 == InfR = -1;T = 0;
endfor t=1:500 %循环次数,即动画持续时间Ei = cos(w0*t-k1*x-pi/2); %计算入射波Er = R*cos(w0*t+k1*x-pi/2); %计算反射波,折射系数为REt = T*cos(w0*t-k2*y-pi/2); %计算透射波,折射系数为TEz = Ei + Er; %计算合成驻波plot([-4,4],[0,0],'k','LineWidth',2); %画y参考轴线,不画的话图像会出问题hold on;plot([0,0],[-3,3],'k','LineWidth',2); %画x参考轴线axis([-3,3,-3,3]); %固定视角if t<length(x)if po1<length(x)po1=po1+1;for a=t:length(x)Ei(a)=0; endendend %通过循环将入射波的传播方式模拟出来,没传到的地方置零plot(x, Ei,'b','LineWidth',1); %绘制入射波if t>length(x)if po2<length(x)po2=po2+1;for b=1:length(x)-po2Er(b)=0;Ez(b)=0;endendplot(x, Er,'r','LineWidth',1); %绘制反射波plot(x, Ez,'k','LineWidth',2); %绘制合成驻波if po3<length(y)po3=po3+1;for c=t-length(x):length(y)Et(c)=0; endend plot(y, Et,'k','LineWidth',2); %绘制透射波 endxlabel('x','FontSize',10) %x标签ylabel('y','FontSize',10) %z标签hold off;title('均匀平面波正入射','FontSize',10,'color','k');if gama2 == 0text(1,2.2,'\it理想介质','FontSize',20);elsetext(1,2.2,'\it理想导体','FontSize',20);endtext(-2,-2.2,'\itE_y','FontSize',20);text(-2,2.2,'\it理想介质','FontSize',20);drawnow; %更新画面,形成动画
End
以下为函数的帮助文档,通过改变参数,可以通过此函数实现电磁波入射不同介质的波形的仿真
基于Matlab的电磁场与波“电磁波的入射、反射、透射”仿真—(可实现波形入射反射过程的仿真)相关推荐
- 基于Matlab的电磁场与波“镜像电荷法”仿真——导体球外点电荷的几种情况
目录 零.使用到的绘制电场线方向的原创函数 drawEline函数 1.目的 2.源代码 3.注意事项 一.导体球外点电荷的镜像法(导体球接地情况与不接地情况) 1.目的: 2.理论分析: 3.源代码 ...
- 基于Matlab的电磁场与波“镜像电荷法”仿真——平面导体劈的点电荷镜像
0.代码中用到的drawEline函数 在使用代码前记得把这个函数和仿真文件放到一个文件夹下哦 function pipi=drawEline(h1,d1,d2)posAxes = get(gca, ...
- 基于Matlab的电磁场与波“镜像电荷法”仿真——点电荷位于半球形凸起导体附近
0.代码中用到的drawEline函数 在使用代码前记得把这个函数和仿真文件放到一个文件夹下哦 function pipi=drawEline(h1,d1,d2)posAxes = get(gca, ...
- 基于MATLAB实现电磁场的动画演示
基于MATLAB实现电磁场的动画演示 简介:学习过电磁场的小伙伴们都比较清楚,电磁场由于其抽象的概念,时空分布复杂等问题,成功劝退一大波小朋友,如果我们在学习的时候能够将抽象的概念可视化,再将静态的图 ...
- matlab绘制磁场图,基于Matlab的电磁场图示化教学
第 26 卷第 3 期 孝感学院学报 VOL. 26 NO. 3 2006 年 5 月 JOURNAL OF XIAOGAN UNIVERSITY MA Y. 2006 基于 Matlab 的电磁场图 ...
- 基于matlab的升压斩波实验,基于MATLAB的升压斩波电路的仿真_贾立柱
科技专论 基于MATLAB的升压斩波电路的仿真 贾立柱1 刘晓龙2 1.齐齐哈尔大学网络信息中心 黑龙江齐齐哈尔 161006 2.华北电力大学 北京 102206 [摘 要]升压斩波电路是电力电子技 ...
- 瑞雷波频散曲线_基于Matlab平台的瑞雷波频散曲线提取
吴少奇 刘雪峰 甘立烽 柳承成 [摘 要]拉东变换算法是目前从瑞雷波中提取频散曲线的较常用和较好的方法.由于拉东变换算法复杂,给提取频散曲线带来不便:为了提高提取效率和优化提取效果,本文利用Matla ...
- 基于matlab的升压斩波实验,实验二、基于Simulink的直流斩波电路的仿真实验报告...
仲恺农业工程学院实验报告纸 自动化(院.系)自动化专业 112 班组电力电子技术课实验二.基于Simuilink的直流斩波电路仿真实验 一.实验目的 (1)加深理解直流斩波电路的工作原理. (2)学会 ...
- 基于matlab的升压斩波实验,升降压斩波电路matlab仿真
升降压斩波电路matlab仿真 1.电路原理 当可控开关V处于通态时,电源E经V向电感L供电使其储存能量,此时电流为i1.同时,电容C维持输出电压基本恒定并向负载R供电.此后,使V关断,电感L中储存的 ...
最新文章
- 初识费用流 模板(spfa+slf优化) 餐巾计划问题
- Win7系统Visual Studio 2013配置OpenCV3.1图文详解
- 查看oracle中path,查看oracle进程启动时的环境变量
- 真香!微软将为Edge浏览器带来超好用的全新侧边搜索功能:无需跳转网页
- mysql-用正则表达式进行搜索
- Intel QuickAssist Technology and OpenSSL – Benchmarks and Setup Tips
- 晨哥真有料丨这样的你很掉价!
- flannel vxlan工作基本原理及常见排障方法
- 多线程并发-java内存模型和计算机基础
- ArcGIS Pro 简明教程(4)工具和模型构建器
- 华为手机解锁码计算工具_华为最新解bl解锁码读取工具
- Unity 3D中实现敌人追踪
- PowerDesigner如何自定义报表模板
- [Ubuntu] LightDM 轻量级桌面显示管理器
- javax.faces.FacesException: Unable to find CDI BeanManager的解决方法
- php长图生成,用 3 行代码就可以生成好看的锤子便签图片(传入内容即可,俗称长微博)...
- HTTP内容的大小写问题
- 谁会买下Delphi?
- 公司福利直接影响员工的身心健康
- 什么叫数字化服务-数字化转型网
热门文章
- dedecms中[field:imglink/]图片大小问题
- Qt widget事件传递顺序以及监听特定控件是否接收某个事件
- 路由器ACL(访问控制列表)详解
- Zcash中的zk-SNARK statements
- Linux系统下操作的常用快捷键
- makefile predefined variable $^ $@
- Android 真机连接本地PC服务器
- 修改数据库字符集为'us7ascii'
- 计算机处理io和cpu,虚拟化技术原理(CPU、内存、IO)
- 6阶子群同构于s3或者z6_[2017年整理]离散数学复习.ppt