您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 基于MATLAB的电磁场动画仿真
基于MATLAB的电磁场动画仿真目录1、编程思路2、基本函数介绍3实例演示目录结构4心得与总结编程思路编程思路动画的原理ttt通过循环,不断增加时间变量,,不断作画,保持一定时间,擦除,重新作画,并且在一定时间内连续演示,这样就形成了动画。编程思路时间、空间变量的定义确定函数式(比如圆极化)设置循环作图延时,擦除再作图基本函数介绍基本函数介绍pausequivermovie2aviquiver(x,y,u,v,size)quiver(u,v)quiver3(X,Y,Z,U,V,W)pause(n)—n对应暂停多少秒movie2avi(mov,'myPeaks.avi');前面必须搭配录制图像的循环mov(k)=getframe(gcf);gradient求梯度画等高(势)线contourpausemovie2avi的简单举例clearall;closeall;clc;%清除变量,关闭图像,清屏w=2*pi;t=0;%设置时间x=0:0.01:9;fori=1:300y=sin(w*t-x);plot(x,y);title('正弦波传播');xlabel('x');ylabel('y');axis([09-11]);gridon;holdon;mov(i)=getframe(gcf);%录制pause(0.1);%延时t=t+0.1;holdoff;endmovie2avi(mov,'正弦波传播');%生成avi视频文件quivergradientcontourclearall;clc;closeall;q1=-2*10.^-9;k=9*10.^9;x=(-5:0.5:5);y=(-5:0.5:5);[X,Y]=meshgrid(x,y);r1=sqrt((X-3).^2+Y.^2);u=k*q1./r1;n=(-5:.5:5);[Ex,Ey]=gradient(-u);Ex=Ex./sqrt(Ex.^2+Ey.^2);Ey=Ey./sqrt(Ex.^2+Ey.^2);xlabel('x','fontsize',15);ylabel('y','fontsize',15);title(‘负电荷电场');holdongridon;axis([-5,5,-5,5]);holdon;plot(3,0,'O','MarkerSize',15);contour(X,Y,u,n,'r.');quiver(X,Y,Ex,Ey);实例演示实例演示clear;clc;closeall;%清除历史变量和操作t=0;%设置初始时间k=2;w=10;y=(0:0.1:30);l=zeros(size(y));fori=1:300gridon;E=cos(w*t-k*y);%电场表达式H=0.3.*cos(w*t-k*y);%磁场表达式式view(i,i);quiver3(l,y,l,E,l,l,'r');holdon;quiver3(l,y,l,l,l,H,'b');title('电磁波传播动画');xlabel('H(蓝色),x');ylabel('y');zlabel('E(红色),z');pause(0.1);%设置视觉残留时间mov(i)=getframe(gcf);%录制t=t+0.01;%设置时间仿真步长endholdoff;movie2avi(mov,'电磁波传播动画.avi');%生成avi视频文件实例演示%左旋圆极化波clearall;clc;closeall;x=(0:0.3:30);%初始位置l=zeros(size(x));t=0;%时间变量fori=1:1500%帧数ey=cos(2*pi*t-0.8*x);%电场横向分量ez=cos(2*pi*t-0.8*x+pi/2);%电场纵向分量quiver3(x,l,l,l,ey,ez);%画矢量图title('左旋园极化波');%标题xlabel('x');%x标签ylabel('y');%y标签zlabel('z');%z标签axis([0,30,-4,4,-4,4]);view(20,40);%观察范围pause(0.01);%延时mov(i)=getframe(gcf);%录制t=t+0.01;end;holdoff;movie2avi(mov,'左旋园极化波.avi');%生成avi视频文件实例演示实例演示%垂直极化线极化波入射理想导体clear;%清除变量x1=(0:0.3:30);%初始位置z1=(30:-0.3:0);%初始位置x2=(30:0.3:60);%初始位置z2=(0:0.3:30);%初始位置Ei=zeros(size(x1));%初始入射电场Er=zeros(size(x1));%初始反射电场l=zeros(size(x1));%零向量t=0;fori=1:250%帧数ifi=101;%波还能没有到界面Ei(1:i)=cos(20*pi*t-0.35*(x1(1:i)-z1(1:i)));%电场quiver3(x1,l,z1,l,Ei,l);%画图end;ifi101;%波已经到达界面Ei=cos(20*pi*t-0.35*(x1-z1));%电场ifi=202;Er(1:i-101)=-cos(20*pi*t-0.35*(x2(1:i-101)+z2(1:i-101)));end;实例演示ifi202;Er=-cos(20*pi*t-0.35*(x2+z2));endquiver3(x1,l,z1,l,Ei,l);%画图holdon;%图形保持quiver3(x2,l,z2,l,Er,l);%画图end;title('垂直极化波','FontSize',15);%标题xlabel('x','FontSize',15);%x标签ylabel('y','FontSize',15);%y标签zlabel('z','FontSize',15);%z标签axis([0,60,-10,10,0,30]);%观察范围view(20+i,40);%视角pause(0.0001)%延时t=t+0.00334;mov(i)=getframe(gcf);%时间增加holdoff;end;movie2avi(mov,’垂直极化波.avi')实例演示心得与总结心得与总结1、要结合所学知识构建模型,形成自己的编程思路。2、在编程中,应多留意细节,比如时间的步进应该与所给的频率匹配,即满足ΔtT,否则将观察不到相位连续变化的图像,甚至有可能看起来波在向与预期相反的方向传播。3、针对不同类型的电磁波,改变view的角度以及作图方式可以方便我们观察出我们想要观察的特点。4、编程都是由简到繁逐渐丰富自己的程序,逐步调试,逐渐实现自己想要的功能,不能一蹴而就!知识回顾KnowledgeReview
本文标题:基于MATLAB的电磁场动画仿真
链接地址:https://www.777doc.com/doc-5596688 .html