基于MATLAB的电磁场动画仿真
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实例演示
%左旋圆极化波 clear all;clc;close all; x=(0:0.3:30); %初始位置 l=zeros(size(x)); t=0; %时间变量 for i=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; hold off; movie2avi(mov,'左旋园极化波.avi'); %生成avi视频文件
基于MATLAB的电磁场动画仿真
目录
1 、编程思路
目录 结构
2 、基本函数介绍 3 实例演示 4 心得与总结
编程思路
编程思路
动画的原理
通过循环,不断增加时间变 量,t t t ,不断作画,保持 一定时间,擦除,重新作画 , 并且在一定时间内连续演示,这 样就形成了动画。
编程思路
时间、空间变量的定义
quiver gradient contour
clear all;clc;close all; 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(‘负电荷电场'); hold on grid on; axis([-5,5,-5,5]); hold on; plot(3,0,'O','MarkerSize',1 5); contour(X,Y,u,n,'r.'); quiver(X,Y,Ex,Ey);
源自文库
实例演示
心得与总结
心得与总结 1、要结合所学知识构建模型,形成自己的编程思 路。 2、在编程中,应多留意细节,比如时间的步进应 该与所给的频率匹配,即满足Δt<T,否则将观察 不到相位连续变化的图像,甚至有可能看起来波在 向与预期相反的方向传播。 3、针对不同类型的电磁波,改变view的角度以及 作图方式可以方便我们观察出我们想要观察的特点。 4、编程都是由简到繁逐渐丰富自己的程序,逐步 调试,逐渐实现自己想要的功能,不能一蹴而就!
实例演示
实例演示
%垂直极化线极化波入射理想导体 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; for i=1:250 %帧数 if i<=101; %波还能没有到界面 Ei(1:i)=cos(20*pi*t-0.35*(x1(1:i)-z1(1:i))); %电场 quiver3(x1,l,z1,l,Ei,l); %画图 end; if i>101; %波已经到达界面 Ei=cos(20*pi*t-0.35*(x1-z1)); %电场 if i<=202; Er(1:i-101)=-cos(20*pi*t-0.35*(x2(1:i-101)+z2(1:i-101))); end;
确定函数式(比如圆极化)
设置循环
作图
基本函数 介绍
基本函数介绍
pause
pause(n)—n对应暂停多少秒
movie2avi movie2avi(mov, 'myPeaks.avi');
前面必须搭配录制图像的循环 mov(k) = getframe(gcf);
quiver
quiver(x,y,u,v,size) quiver(u,v) quiver3(X,Y,Z,U,V,W) 求梯度 contour 画等高(势)线
实例演示
实例演示
clear;clc;close all;%清除历史变量和操作 t=0;%设置初始时间 k=2; w=10; y=(0:0.1:30);l=zeros(size(y)); for i=1:300 grid on; 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'); hold on; 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; %设置时间仿真步长 end hold off;movie2avi(mov,'电磁波传播动画.avi');%生成avi视频文件
实例演示
if i>202; Er=-cos(20*pi*t-0.35*(x2+z2)); end quiver3(x1,l,z1,l,Ei,l); %画图 hold on; %图形保持 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); %时间增加 hold off; end; movie2avi(mov,’垂直极化波.avi')
gradient
pause movie2avi的简单举例
clear all;close all;clc;%清除变量,关闭图像,清屏 w=2*pi; t=0; %设置时间 x=0:0.01:9; for i=1:300 y=sin(w*t-x); plot(x,y); title('正弦波传播'); xlabel('x');ylabel('y'); axis([0 9 -1 1]); grid on; hold on; mov(i)=getframe(gcf);%录制 pause(0.1); %延时 t=t+0.1;hold off; end movie2avi(mov,'正弦波传播');%生成avi视频文件