三维电磁场FDTD程序(3D-FDTD matlab)PEC边界

三维电磁场FDTD程序(3D-FDTD matlab)PEC边界
三维电磁场FDTD程序(3D-FDTD matlab)PEC边界

% FDTD Main Function Jobs to Workers %

%*********************************************************************** % 3-D FDTD code with PEC boundaries

%*********************************************************************** %

% This MATLAB M-file implements the finite-difference time-domain

% solution of Maxwell's curl equations over a three-dimensional

% Cartesian space lattice comprised of uniform cubic grid cells.

%

% To illustrate the algorithm, an air-filled rectangular cavity

% resonator is modeled. The length, width, and height of the

% cavity are X cm (x-direction), Y cm (y-direction), and

% Z cm (z-direction), respectively.

%

% The computational domain is truncated using PEC boundary

% conditions:

% ex(i,j,k)=0 on the j=1, j=jb, k=1, and k=kb planes

% ey(i,j,k)=0 on the i=1, i=ib, k=1, and k=kb planes

% ez(i,j,k)=0 on the i=1, i=ib, j=1, and j=jb planes

% These PEC boundaries form the outer lossless walls of the cavity. %

% The cavity is excited by an additive current source oriented

% along the z-direction. The source waveform is a differentiated

% Gaussian pulse given by

% J(t)=-J0*(t-t0)*exp(-(t-t0)^2/tau^2),

% where tau=50 ps. The FWHM spectral bandwidth of this zero-dc-

% content pulse is approximately 7 GHz. The grid resolution

% (dx = 2 mm) was chosen to provide at least 10 samples per

% wavelength up through 15 GHz.

%

% To execute this M-file, type "fdtd3D" at the MATLAB prompt.

% This M-file displays the FDTD-computed Ez fields at every other

% time step, and records those frames in a movie matrix, M, which % is played at the end of the simulation using the "movie" command. %

%*********************************************************************** function [Ex,Ey,Ez]=FDTD3D_Main(handles)

global SimRunStop

% if ~isdir('C:\MATLAB7\work\cavity\figures')

% mkdir 'C:\MATLAB7\work\cavity\figures'

% end

%*********************************************************************** % Grid Partition

%***********************************************************************

p.ip = get(handles.XdirPar,'Value');

p.jp = get(handles.YdirPar,'Value');

p.PN = get(handles.PartNo,'Value');

%***********************************************************************

% Grid Dimensons

%***********************************************************************

ie = get(handles.xslider,'Value'); %number of grid cells in x-direction

je = get(handles.yslider,'Value'); %number of grid cells in y-direction

ke = get(handles.zslider,'Value'); %number of grid cells in z-direction

ib=ie+1;

jb=je+1;

kb=ke+1;

%***********************************************************************

% All Domains Fields Ini.

%***********************************************************************

Ex=zeros(ie,jb,kb);

Ey=zeros(ib,je,kb);

Ez=zeros(ib,jb,ke);

Hx=zeros(ib,je,ke);

Hy=zeros(ie,jb,ke);

Hz=zeros(ie,je,kb);

%***********************************************************************

% Fundamental constants

%***********************************************************************

https://www.360docs.net/doc/7011902335.html,=2.99792458e8; %speed of light in free space

param.muz=4.0*pi*1.0e-7; %permeability of free space

param.epsz = 1.0/(https://www.360docs.net/doc/7011902335.html,*https://www.360docs.net/doc/7011902335.html,*param.muz); %permittivity of free space

%***********************************************************************

% Grid parameters

%***********************************************************************

param.is = get(handles.xsource,'Value'); %location of z-directed current source param.js = get(handles.ysource,'Value'); %location of z-directed current source

param.kobs = floor(ke/2); %Surface of observation

param.dx = get(handles.CellSize,'Value');; %space increment of cubic lattice param.dt = param.dx/(2.0*https://www.360docs.net/doc/7011902335.html,); %time step

param.nmax = get(handles.TimeStep,'Value');; %total number of time steps

%***********************************************************************

% Differentiated Gaussian pulse excitation

%***********************************************************************

param.rtau=get(handles.tau,'Value')*100e-12;

param.tau=param.rtau/param.dt;

param.ndelay=3*param.tau;

param.Amp = get(handles.sourceamp,'Value')*10e11;

param.srcconst=-param.dt*param.Amp;

%***********************************************************************

% Material parameters

%***********************************************************************

param.eps= get(handles.epsilon,'Value');

param.sig= get(handles.sigma,'Value');

%***********************************************************************

% Updating coefficients

%***********************************************************************

param.ca=(1.0-(param.dt*param.sig)/(2.0*param.epsz*param.eps))/(1.0+(param.dt*param.si g)/(2.0*param.epsz*param.eps));

param.cb=(param.dt/param.epsz/param.eps/param.dx)/(1.0+(param.dt*param.sig)/(2.0*param .epsz*param.eps));

param.da=1.0;

param.db=param.dt/param.muz/param.dx;

%***********************************************************************

% Calling FDTD Algorithm

%***********************************************************************

ex=zeros(ib,jb,kb);

ey=zeros(ib,jb,kb);

ez=zeros(ib,jb,kb);

hx=zeros(ib,jb,kb);

hy=zeros(ib,jb,kb);

hz=zeros(ib,jb,kb);

[X,Y,Z] = meshgrid(1:ib,1:jb,1:kb); % Grid coordinates

Psim = zeros(param.nmax,1);

Panl = zeros(param.nmax,1);

if ((p.ip == 1)&(p.jp == 0))

x = ceil(ie/p.PN)

param.a = [1:x-1:ie-x];

param.b = [x+1:x-1:ie];

param.c = [1,1];

param.d = [je,je];

m2 = 1;

for n=1:1:param.nmax

for m1=1:1:p.PN

[ex,ey,ez]=Efields(param,handles,ex,ey,ez,hx,hy,hz,ie,je,ke,ib,jb,kb,n,m1,m2,p); [hx,hy,hz] =

Hfields(param,hx,hy,hz,ex,ey,ez,ie,je,ke,ib,jb,kb,n,m1,m2,p);

end

[Psim(n),Panl(n)] = Cavity_Power(param,handles,ex,ey,ez,n);

field_viz(param,handles,ex,ey,ez,X,Y,Z,n,Psim,Panl,p);

Dyn_FFT

pause(0.01);

end

elseif ((p.ip == 0)&(p.jp == 1))

y = ceil(je/p.PN);

param.c = [1:y-1:je-y];

param.d = [y+1:y-1:je];

param.a = [1,1];

param.b = [ie,ie];

m1 = 1;

for n=1:1:param.nmax

for m2=1:1:p.PN

[ex,ey,ez]=Efields(param,handles,ex,ey,ez,hx,hy,hz,ie,je,ke,ib,jb,kb,n,m1,m2,p); [hx,hy,hz] =

Hfields(param,hx,hy,hz,ex,ey,ez,ie,je,ke,ib,jb,kb,n,m1,m2,p);

end

[Psim(n),Panl(n)] = Cavity_Power(param,handles,ex,ey,ez,n);

field_viz(param,handles,ex,ey,ez,X,Y,Z,n,Psim,Panl,p);

pause(0.01);

end

elseif ((p.ip == 1)&(p.jp == 1))

x = ceil(ie/p.PN);

param.a = [1:x-1:ie-x];

param.b = [x+1:x-1:ie];

y = ceil(je/p.PN);

param.c = [1:y-1:je-y];

param.d = [y+1:y-1:je];

for n=1:1:param.nmax

for m2=1:1:p.PN

for m1=1:1:p.PN

[ex,ey,ez]=Efields(param,handles,ex,ey,ez,hx,hy,hz,ie,je,ke,ib,jb,kb,n,m1,m2,p); [hx,hy,hz] =

Hfields(param,hx,hy,hz,ex,ey,ez,ie,je,ke,ib,jb,kb,n,m1,m2,p);

end

end

[Psim(n),Panl(n)] = Cavity_Power(param,handles,ex,ey,ez,n);

field_viz(param,handles,ex,ey,ez,X,Y,Z,n,Psim,Panl,p);

pause(0.01);

end

else

param.a = 1;

param.b = ie;

param.c = 1;

param.d = je;

m1 = 1;m2=1;

for n=1:1:param.nmax

[ex,ey,ez]=Efields(param,handles,ex,ey,ez,hx,hy,hz,ie,je,ke,ib,jb,kb,n,m1,m2,p);

[hx,hy,hz] =

Hfields(param,hx,hy,hz,ex,ey,ez,ie,je,ke,ib,jb,kb,n,m1,m2,p);

SimRunStop = get(handles.Stop_sim,'value');

if SimRunStop == 1

h = warndlg('Simulation Run is Stopped by User !','!! Warning !!'); waitfor(h);

break;

end

[Psim(n),Panl(n)] = Cavity_Power(param,handles,ex,ey,ez,n);

if n>=2

Panl(n)=Panl(n) + Panl(n-1);

end

field_viz(param,handles,ex,ey,ez,X,Y,Z,n,Psim,Panl,p);

pause(0.01);

end

end

%文件2

% Cavity Field Viz. %

function [] = field_viz(param,handles,ex,ey,ez,X,Y,Z,n,Psim,Panl,p)

%***********************************************************************

% Cross-Section initialization

%***********************************************************************

tview = squeeze(ez(:,:,param.kobs));

sview = squeeze(ez(:,param.js,:));

ax1 = handles.axes1;

ax2 = handles.axes2;

ax3 = handles.axes3;

%*********************************************************************** % Visualize fields

%***********************************************************************

timestep=int2str(n);

ezview=squeeze(ez(:,:,param.kobs));

exview=squeeze(ex(:,:,param.kobs));

eyview=squeeze(ey(:,:,param.kobs));

xmin = min(X(:));

xmax = max(X(:));

ymin = min(Y(:));

ymax = max(Y(:));

zmin = min(Z(:));

daspect([2,2,1])

xrange = linspace(xmin,xmax,8);

yrange = linspace(ymin,ymax,8);

zrange = 3:4:15;

[cx cy cz] = meshgrid(xrange,yrange,zrange);

% sview=squeeze(ez(:,param.js,:));

rect = [-50 -35 360 210];

rectp = [-50 -40 350 260];

axes(ax1);

axis tight

set(gca,'nextplot','replacechildren');

E_total = sqrt(ex.^2 + ey.^2 + ez.^2);

etview=squeeze(E_total(:,:,param.kobs));

sview = squeeze(E_total(:,param.js,:));

surf(etview');

shading interp;

caxis([-1.0 1.0]);

colorbar;

axis image;

title(['Total E-Field, time step = ',timestep],'fontname','Times New Roman','fontsize',12,'FontWeight','BOLD');

xlabel('i coordinate');

ylabel('j coordinate');

set(gca,'fontname','Times New Roman','fontsize',10);

% F1 = getframe(gca,rect);

% M1 = frame2im(F1);

% filename =

fullfile('C:\MATLAB7\work\cavity\figures',strcat('XY_ETotal',num2str(n),'.jpeg')); % imwrite(M1,filename,'jpeg')

axes(ax2);

axis tight

set(gca,'nextplot','replacechildren');

surf(sview');

shading interp;

caxis([-1.0 1.0]);

colorbar;

axis image;

title(['Ez(i,j=13,k), time step = ',timestep],'fontname','Times New

Roman','fontsize',12,'FontWeight','BOLD');

xlabel('i coordinate');

ylabel('k coordinate');

set(gca,'fontname','Times New Roman','fontsize',10);

% F2 = getframe(gca,rect);

% M2 = frame2im(F2);

% filename =

fullfile('C:\MATLAB7\work\cavity\figures',strcat('XZ_ETotal',num2str(n),'.jpeg')); % imwrite(M2,filename,'jpeg')

%***********************************************************************

% Cavity Power - Analitic expression

%***********************************************************************

axes(ax3);

% axis tight

% set(gca,'nextplot','replacechildren');

t = [1:1:param.nmax];

Psim = 1e3*Psim./max(Psim);

Panl = 1e3*Panl./max(Panl);

semilogy(t,Psim,'b.-',t,Panl,'rx-');

str(1) = {'Normalized Analytic Vs. Simulated Power'};

str(2) = {'as function of time-steps'};

title(str,'fontname','Times New Roman','fontsize',12,'FontWeight','BOLD' );

xlabel('Time Step');

ylabel('Log(Power)');

legend('Simulation','Analytic','location','SouthEast');

set(gca,'fontname','Times New Roman','fontsize',10);

% F3 = getframe(gca,rectp);

% M3 = frame2im(F3);

% filename =

fullfile('C:\MATLAB7\work\cavity\figures',strcat('Power',num2str(n),'.jpeg'));

% imwrite(M3,filename,'jpeg')

%文件3

% Source waveform function

function [source]=waveform(param,handles,n)

ax1 = handles.axes1;

type = get(handles.sourcetype,'value');

amp = get(handles.sourceamp,'value')*1e4;

f = get(handles.Frequency,'value')*1e9;

switch type

case 2

source =

param.srcconst*(n-param.ndelay)*exp(-((n-param.ndelay)^2/param.tau^2));

case 1

source = param.srcconst*sin(param.dt*n*2*pi*f);

case 3

source =

param.srcconst*exp(-((n-param.ndelay)^2/param.tau^2))*sin(2*pi*f*(n-param.ndelay)*para m.dt);

otherwise

source =

param.srcconst*(n-param.ndelay)*exp(-((n-param.ndelay)^2/param.tau^2));

end

%文件4

function [hx,hy,hz] = Hfields(param,hx,hy,hz,ex,ey,ez,ie,je,ke,ib,jb,kb,n,x,y,p)

a = param.a(x);

b = param.b(x);

c = param.c(y);

d = param.d(y);

hx(a+1:b,c:d,1:ke)=...

hx(a+1:b,c:d,1:ke)+...

param.db*(ey(a+1:b,c:d,2:kb)-...

ey(a+1:b,c:d,1:ke)+...

ez(a+1:b,c:d,1:ke)-...

ez(a+1:b,c+1:d+1,1:ke));

hy(a:b,c+1:d,1:ke)=...

hy(a:b,c+1:d,1:ke)+...

param.db*(ex(a:b,c+1:d,1:ke)-...

ex(a:b,c+1:d,2:kb)+...

ez(a+1:b+1,c+1:d,1:ke)-...

ez(a:b,c+1:d,1:ke));

hz(a:b,c:d,2:ke)=...

hz(a:b,c:d,2:ke)+...

param.db*(ex(a:b,c+1:d+1,2:ke)-...

ex(a:b,c:d,2:ke)+...

ey(a:b,c:d,2:ke)-...

ey(a+1:b+1,c:d,2:ke));

%文件5

function [ex,ey,ez]=Efields(param,handles,ex,ey,ez,hx,hy,hz,ie,je,ke,ib,jb,kb,n,x,y,p)

a = param.a(x);

b = param.b(x);

c = param.c(y);

d = param.d(y);

if (param.is>=a)&(param.is<=b)|(param.js>=c)&(param.js<=d)

source = waveform(param,handles,n);

else

source = 0;

end

ex(a:b,c+1:d,2:ke)=...

param.ca*ex(a:b,c+1:d,2:ke)+...

param.cb*(hz(a:b,c+1:d,2:ke)-...

hz(a:b,c:d-1,2:ke)+...

hy(a:b,c+1:d,1:ke-1)-...

hy(a:b,c+1:d,2:ke));

ey(a+1:b,c:d,2:ke)=...

param.ca*ey(a+1:b,c:d,2:ke)+...

param.cb*(hx(a+1:b,c:d,2:ke)-...

hx(a+1:b,c:d,1:ke-1)+...

hz(a:b-1,c:d,2:ke)-...

hz(a+1:b,c:d,2:ke));

ez(a+1:b,c+1:d,1:ke)=...

param.ca*ez(a+1:b,c+1:d,1:ke)+...

param.cb*(hx(a+1:b,c:d-1,1:ke)-...

hx(a+1:b,c+1:d,1:ke)+...

hy(a+1:b,c+1:d,1:ke)-...

hy(a:b-1,c+1:d,1:ke));

ez(param.is,param.js,1:ke)=ez(param.is,param.js,1:ke)+source;

矩形谐振腔电磁场的FDTD分析和Matlab仿真

矩形谐振腔电磁场的FDTD分析和Matlab仿真 摘要:目前,电磁场的时域计算方法越来越引人注目。这种方法已经广泛应用到各种电磁问题的分析之中。而将Matlab作为一种仿真工具,用于时域有限差分法,可以简化编程,使研究者重心放在FDTD本身上,而不必在编程上花费过多的时间。本课题通过用FDTD方法计算矩形谐振腔电磁场分布,并用Matlab 进行仿真。 关键词:时域有限差分法,Matlab仿真,矩形谐振腔 1.引言 时域有限差分法(Finite-Dfference Time-Domain Method)是求解电磁问题的一种数值技术,是在1966年由K.S.Yee第一次提出的。FDTD法直接将有限差分式代替麦克斯韦时域场旋度方程中的微分式,得到关于场分量的有限差分式,用具有相同电参量的空间网格去模拟被研究体,选取合适的场始值和计算空间的边界条件,可以得到包括时间变量的麦克斯韦方程的四维数值解,通过傅里叶变换可求得三维空间的频域解。时域有限差分法突出的优点是所需的存储量及计算时间与N成正比,使得很多复杂的电磁场计算问题成为可能,用时域有限差分法容易模拟各种复杂的结构,使得用其他方法不能解决的问题有了新的处理方法。 本文主要讨论如何用Matlab语言来编写FDTD的吸收边界条件以及编程时应注意的问题。 2时域有限差分法的基本理论 2.1 时域有限差分法的简介 1966年K.S.Yee首次提出了一种电磁场数值计算的新方法——时域有限差分(Finite-Dfference Time-Domain Method)方法。对电磁场E、H分量在时间和空间上采取交替抽样的离散方式,每一个E(或H)场分量四周有四个H(或E)场分量环绕,应用这种离散方式将含时间变量的麦克斯韦旋度方程转化为一组差分方程,并在时间轴上逐步推进地求解空间电磁场。Yee提出的这种抽样方式后来被称为Yee元胞。 FDTD方法是求解麦克斯韦方程的直接时域方法。在计算中将空间某一样本点的电场(或磁场)与周围格点的磁场(或电场)直接相关联,且介质参数已赋值给空间每一个元胞,因此这一方法可以处理复杂形状目标和非均匀介质物体的电磁散射、辐射等问题。同时FDTD的随时间推进可以方便地给出电磁场的时间演化过程,在计算机上以伪彩色方式显示,这种电磁场可视化结果清楚的显示了物理过程,便于分析和设计。 2.2 FDTD数值计算的优势 FDTD算法,其空间节点采用Yee元胞的方法,电场和磁场节点空间与时间上都采用交错抽样,因而使得麦克斯韦旋度方程离散后构成显示差分方程,相比较宇前面的波动方程求解,计算等到大大简化。由于FDTD采用吸收边界条件的

Matlab 在电磁场中的应用 (2)

Matlab 在电磁场中的 应用 专业: 电气信息与自动化 班级:2012级自动化3班 学号:12012242065 学院:物电学院 指导老师:李虹 完成日期:2013年12月15日

Matlab 在电磁场中的应用 摘要 Matlab是美国Mathworks公司于80年代推出的大型数学软件,通过多年的升级换代,现在已发展成为集数值计算、符号计算、可视化功能以及诸多的工具箱为一体的大型科学计算软件,它已广泛应用于科研院所、工程技术等各个部门,并成为大学生、研究生必备的工具软件。 电磁学是物理学的一个分支,是研究电场和电磁的相互作用现象。电磁学从原来互相独立的两门科学(电学、磁学)发展成为物理学中一个完整的分支学科,主要是基于电流的磁效应和变化的磁场的电效应的发现。这两个实验现象,加上麦克斯韦关于变化电场产生磁场的假设,奠定了电磁学的整个理论体系,发展了对现代文明起重大影响的电工和电子技术。 针对电磁场学习理论性强、概念抽象等特点,利用Matlab强大的数值计算和图形技术,通过具体实例进行仿真,绘制相应的图形,使其形象化,便于对其的理解和掌握。将Matlab引入电磁学中,利用其可视化功能对电磁学实验现象进行计算机模拟,可以提高学习效率于学习积极性,使学习效果明显。 本文通过Matlab软件工具,对点电荷电场、线电荷产生的电位、平面上N 个电荷之间的库仑引力、仿真电荷在变化磁场中的运动等问题分别给出了直观形象的的仿真图,形实现了可视化学习,丰富了学习内容,提高了对电磁场理论知识的兴趣。 关键词:Matlab 电磁学仿真计算机模拟 一、点电荷电场 问题描述: 真空中,两个带正电的点电荷,在电量相同和电量不同情况下的电场分布。根据电学知识,若电荷在空间激发的电势分布为V,则电场强度等于电势梯度的

matlab 三维图形绘制实例

三维图形 一. 三维曲线 plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 其中每一组x,y,z 组成一组曲线的坐标参数,选项的定义和plot 函数相同。当x,y ,z 是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y ,z 是同维矩阵时,则以x,y,z 对应列元素绘制三维曲线,曲线条数等于矩阵列数。 Example1.绘制三维曲线。 程序如下: clf, t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); %向量的乘除幂运算前面要加点 plot3(x,y,z); title('Line in 3-D Space'); xlabel('X');ylabel('Y');zlabel('Z'); grid on; 所的图形如下: -1 1 X Line in 3-D Space Y Z 二. 三维曲面 1. 产生三维数据 在MATLAB 中,利用meshgrid 函数产生平面区域内的网格坐标矩阵。

语句执行后,矩阵X 的每一行都是向量x ,行数等于向量y 的元素的个数,矩阵Y 的每一列都是向量y ,列数等于向量x 的元素的个数。 2. 绘制三维曲面的函数 surf 函数和mesh 函数 example2. 绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下: clf, [x,y]=meshgrid(0:0.25:4*pi); %产生平面坐标区域内的网格坐标矩阵 z=sin(x+sin(y))-x./10; surf(x,y,z); axis([0 4*pi 0 4*pi -2.5 1]); title('surf 函数所产生的曲面'); figure; mesh(x,y ,z); axis([0 4*pi 0 4*pi -2.5 1]); title('mesh 函数所产生的曲面'); -2.5 -2-1.5-1-0.500.51surf 函数所产生的曲面

电磁场的Matlab仿真.

Matlab 与电磁场模拟 一单电荷的场分布: 单电荷的外部电位计算公式: q φ= 4πε0r 等位线就是连接距离电荷等距离的点,在图上表示就是一圈一圈的圆,而电力线就是由点向 外辐射的线。 MATLAB 程序: theta=[0:.01:2*pi]'; r=0:10; x=sin(theta*r; y=cos(theta*r; plot(x,y,'b' x=linspace(-5,5,100; for theta=[-pi/4 0 pi/4] y=x*tan(theta; hold on ; plot(x,y; end grid on 单电荷的等位线和电力线分布图: 二多个点电荷的电场情况: 模拟一对同号点电荷的静电场 设有两个同号点电荷, 其带电量分别为 +Q1和+Q2(Q1、Q2>0 距离为 2a 则两 电荷在点P(x, y处产生的电势为: 由电场强度可得E = -?U, 在xOy 平面上, 电场强度的公式为: 为了简单起见, 对电势U 做如下变换:

。 Matlab 程序: q=1; xm=2.5; ym=2; x=linspace(-xm,xm; y=linspace(-ym,ym; [X,Y]=meshgrid(x,y; R1=sqrt((X+1.^2+Y.^2; R2=sqrt((X-1.^2+Y.^2; U=1./R1+q./R2; u=1:0.5:4; figure contour(X,Y,U,u grid on legend(num2str(u' hold on

plot([-xm;xm],[0;0] plot([0;0],[-ym;ym] plot(-1,0,'o' , 'MarkerSize' ,12 plot(1,0,'o' , 'MarkerSize' ,12 [DX,DY] = gradient(U; quiver(X,Y,-DX,-DY; surf(X,Y,U; 同号电荷的静电场图像为: 50 40 30 20 10 0-2 2

圆极化波及其MATLAB仿真-西电电子教案

电磁场与电磁波大作业圆极化波及其MATLAB仿真 专业:信息对抗技术班级:021231 学生姓名: 指导教师:黄丘林

一、引言 电磁波电场强度的取向和幅值随时间而变化的性质,在光学中称为偏振。如果这种变化具有确定的规律,就称电磁波为极化电磁波(简称极化波)。如果极化电磁波的电场强度始终在垂直于传播方向的(横)平面内取向,其电场矢量的端点沿一闭合轨迹移动,则这一极化电磁波称为平面极化波。电场的矢端轨迹称为极化曲线,并按极化曲线的形状对极化波命名,其主要分类有线极化波,圆极化波和椭圆极化波。 二、原理详解 下面我们详细分析圆极化波的产生条件。 假设均匀平面电磁波沿+Z 方向传播,电场强度矢量E 频率和传播方向均相同的两个分量 x E 和 y E ,电场强度矢量的表达式为 -00()(1)()y x x X y y jkz x x y y j j jkz x xm y ym E E E E e E e E e e φ φ-=+=+=+E a a a a a a 电场强度矢量的两个分量的瞬时值为 cos()(2)cos() (3) x xm x y ym y E E t kz E E t kz ωφωφ=-+=-+ 设,,0, 2 xm ym m x y E E E z π φφ==-=± = 那么式(2)式(3)变为 cos()cos() 2 x m x y y y E E t E E t ωφπωφ=+=+m 消去t 得 22 ()()1y x m m E E E E += 此方程就是圆方程。电磁波的两正交电场强度分量的合成电场强度矢量E

的模和幅角分别依次为 (4)sin(t )arctan[](t ) (5)cos(t ) m x x x E E ωφαωφωφ==±+==±++ 由式(4)和式(5)可见,电磁波的合成电场强度矢量的大小不随时间变化,而其余x 轴正向夹角α将随时间变化。因此合成的电场强度矢量的矢端轨迹为圆,故称为圆极化。 三、仿真分析 下面我们用MATLAB 进行仿真分析。 假设电磁波为圆极化波,且沿+z 方向传播,则其电场强度矢量轨迹如下图一所示: x 电场强度矢量 y z 图一 而当固定位置观察圆极化波的矢端轨迹,其结果如下图二:

《电磁场与电磁波》仿真实验

《电磁场与电磁波》仿真实验 2016年11月 《电磁场与电磁波》仿真实验介绍 《电磁场与电磁波》课程属于电子信息工程专业基础课之一,仿真实验主要目的在于使学生更加深刻的理解电磁场理论的基本数学分析过程,通过仿真环节将课程中所学习到的理论加以应用。受目前实验室设备条件的限制,目前主要利用 MATLAB 仿真软件进行,通过仿真将理论分析与实际编程仿真相结合,以理论指导实践,提高学生的分析问题、解决问题等能力以及通过有目的的选择完成实验或示教项目,使学生进一步巩固理论基本知识,建立电磁场与电磁波理论完整的概念。 本课程仿真实验包含五个内容: 一、电磁场仿真软件——Matlab的使用入门 二、单电荷的场分布 三、点电荷电场线的图像 四、线电荷产生的电位 五、有限差分法处理电磁场问题 目录 一、电磁场仿真软件——Matlab的使用入门……………............................................... .4 二、单电荷的场分

布 (10) 三、点电荷电场线的图像 (12) 四、线电荷产生的电位 (14) 五、有限差分法处理电磁场问题 (17) 实验一电磁场仿真软件——Matlab的使用入门 一、实验目的 1. 掌握Matlab仿真的基本流程与步骤; 2. 掌握Matlab中帮助命令的使用。 二、实验原理 (一)MATLAB运算 1.算术运算 (1).基本算术运算 MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、\(左除)、 ^(乘方)。

注意,运算是在矩阵意义下进行的,单个数据的算术运算只是 一种特例。 (2).点运算 在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有.*、./、.\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。 例1:用简短命令计算并绘制在0≤x≦6范围内的sin(2x)、sinx2、sin2x。 程序:x=linspace(0,6) y1=sin(2*x),y2=sin(x.^2),y3=(sin(x)).^2; plot(x,y1,x, y2,x, y3) (二)几个绘图命令 1. doc命令:显示在线帮助主题 调用格式:doc 函数名 例如:doc plot,则调用在线帮助,显示plot函数的使用方法。 2. plot函数:用来绘制线形图形 plot(y),当y是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。 plot(x,y),其中x和y为长度相同的向量,分别用于存储x坐标和y 坐标数据。 plot(x,y,s)

电磁场的Matlab仿真

Matlab 与电磁场模拟 一 单电荷的场分布: 单电荷的外部电位计算公式: 等位线就是连接距离电荷等距离的点,在图上表示就是一圈一圈的圆,而电力线就是由点向外辐射的线。 MATLAB 程序: theta=[0:.01:2*pi]'; r=0:10; x=sin(theta)*r; y=cos(theta)*r; plot(x,y,'b') x=linspace(-5,5,100); for theta=[-pi/4 0 pi/4] y=x*tan(theta); hold on ; plot(x,y); end grid on 单电荷的等位线和电力线分布图: r q 04πεφ=

二多个点电荷的电场情况: 模拟一对同号点电荷的静电场 设有两个同号点电荷,其带电量分别为+Q1和+Q2(Q1、Q2>0 )距离为2a则两电荷在点P(x, y)处产生的电势为: 由电场强度可得E = -?U,在xOy平面上,电场强度的公式为: 为了简单起见,对电势U做如下变换: 。 Matlab程序:

q=1; xm=; ym=2; x=linspace(-xm,xm); y=linspace(-ym,ym); [X,Y]=meshgrid(x,y); R1=sqrt((X+1).^2+Y.^2); R2=sqrt((X-1).^2+Y.^2); U=1./R1+q./R2; u=1::4; figure contour(X,Y,U,u) grid on legend(num2str(u')) hold on plot([-xm;xm],[0;0]) plot([0;0],[-ym;ym]) plot(-1,0,'o','MarkerSize',12) plot(1,0,'o','MarkerSize',12) [DX,DY] = gradient(U); quiver(X,Y,-DX,-DY); surf(X,Y,U); 同号电荷的静电场图像为:

用Matlab仿真带电粒子在电磁场中的运动

用Matlab 仿真带电粒子在电磁场中的运动 摘要:如果一个带电粒子在既有电场又有磁场的区域里运动,则其会受到相应的电磁力。这里,运用MATLAB 仿真带电粒子在电场中的运动,进一步讨论带电粒子在E ≠0,B ≠0;E=0,B ≠O 和E ≠0,B=O 并用该软件仿真出以上三种轨迹曲线。 关键字:Matlab ;电磁学;仿真;电荷 0 引言 Matlab 是美国MathWorks 公司开发的一套高性能的数值计算和可视化软件。它是一种以矩阵运算为基础的交互式程序语言,其应用范围涵盖了当今几乎所有的工业应用与科学研究领域,集数值分析、矩阵运算、信号处理和图形显示于一体。其丰富的库函数和各种专用工具箱,将使用者从繁琐的底层编程中解放出来。此外Matlab 更强大的功能还表现在其有大量的工具箱(Toolbox),如:控制系统、数值模拟、信号处理及偏微分方程等工具箱。因此Matlab 已成为大学科学研究中必不可少的工具。 Matlab 具有丰富的计算功能和科学计算数据的可视化能力,特别是应用偏微分方程工具箱在大学物理电磁场的数值仿真中具有无比的优势。下文是在利用Matlab 软件仿真带电粒子在不同电磁场中的运动轨迹。 1 带电粒子在均匀电磁场中的运动理论分析 设带电粒子质量为m ,带电量为q ,电场强度E 沿y 方向,磁感应强度B 沿z 方向. 则带电粒子在均匀电磁场中的运动微分方程为 y m qB v m qB x y == x m qB E m q v m qB E m q y x -=-= 0=z ()()()()()()z y z y y y y y x y x y ======6,5,4,3,2,1 则上面微分方程可化作:

电磁场的matlab仿真实验--m语言1

实验三:等量异号点电荷的电势分布 一、实验目的与要求 1.掌握命令窗口中直接输入语句,进行编程绘制等量异号点电荷的电势分布图; 2.掌握二维网格和三维曲面绘图的语句。 二、实验类型 设计 三、实验原理及说明 这里在命令窗口中直接输入简单的语句进行编程设计。MATLAB有几千个通用和专用 五、实验内容和步骤 (一)建立等量异号点电荷的电势方程

物理情景是oxy平面上在x=2,y=0处有一正电荷,x= -2,y=0处有一负电荷,根据 计算两点电荷电场中电势的分布,由于 (二)利用MA TLAB的函数, 绘制等量异号点电荷的电势分布图 首先选定一系列的x和y后,组成了平面上的网络点,再计算对应每一点上的z值。例如-5:0.2:5,-4:0.2:4分别是选取横坐标与纵坐标的一系列数值,meshgrid是生成数据网格的命令,[x,y]是xy平面上的坐标网格点。z是场点(x ,y)的电势,要求写出z的表达式。这里用到MA TLAB的函数mesh()描绘3D网格图,meshgrid()描绘在3D图形上加坐标网格,sqrt()求变量的平方根。mesh()是三维网格作图命令,mesh(x,y,z)画出了每一个格点(x,y)上对应的z值(电势)。在命令窗口中直接输入简单的语句,如下。 解1

解2

当场点即在电荷处时,会出现分母为零的情况,因此在r里加了一个小量0.01,这样既可以完成计算,又不会对结果的正确性造成太大影响。 另外需要注意的是表达式中的“./ ”、“.^ ”是对数组运算的算符,含义与数值运算中的“./ ”、“.^ ”相同,不同之处是后者只对单个数值变量进行运算,而前者对整个数组变量中的所有元素同时进行运算。 解2为了减少计算量,增加精确度,与先前的示例相比,计算范围由原先的-5

华科电磁场matlab仿真作业

华科电磁场m a t l a b仿真作 业 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

电磁场作业 电气1202 XXX U201200000一.作业一 1.程序框图

2.程序 clear; col = 61; %第一行点数 row = col; %行数 span = 0.3/(col-1); %步长 End = ones(1,col)*col; %每一行的终止点 Start = ones(1,col); %每一行的起始点 A = zeros(row,col); %A矩正存储每点电势 for i = (col-1)/3+1:(col-1)*2/3+1

for j = (col-1)/3+1:(col-1)*2/3+1 A(i,j) =100; end end %初始化电势完毕 temp = A; for n= 1:500 %迭代次数 for i = 2:row-1 if ( i<((col-1)/3+1)||i>( (col-1)*2/3+1 ) ) for j = Start(i)+1:End(i)-1 temp(i,j)=(A(i-1,j) +A(i+1,j) +A(i,j-1) +A(i,j+1))/4; end else for j = 2:(col-1)/3 temp(i,j)=(A(i-1,j) +A(i+1,j) +A(i,j-1) +A(i,j+1))/4; end for j = 2*(col-1)/3+2:col-1 temp(i,j)=(A(i-1,j) +A(i+1,j) +A(i,j-1) +A(i,j+1))/4; end end A = temp; end end X = row:-1:1; Y = col:-1:1; [X,Y] = meshgrid(X,Y); figure(1); surf(rot90(A,2)); figure(2); contour(rot90(A,2)); hold on; [Gx,Gy] = gradient(A,1,1); quiver(Gx,Gy); 3.计算机绘图

实验Matlab三维作图的绘制

实验9 三维绘图 一、实验目的 学会MATLAB软件中三维绘图的方法。 二、实验内容与要求 1.三维曲线图 格式一:plot3(X,Y,Z,S). 说明:当X,Y,Z均为同维向量时,则plot3描出点X(i),Y(i),Z(i)依次相连的空间曲线.若X,Y均为同维矩阵,X,Y,Z每一组相应列向量为坐标画出一条曲线,S为‘color﹣linestyle﹣marker’控制字符表1.6~表1.10. 【例1.79】绘制螺旋线. >>t=0:pi/60:10*pi; >>x=sin(t); >>y=cos(t); >>plot3(x,y,t,’*-b’) >>grid on 图形的结果如图1.16所示. 格式二:comet3(x,y,z). 说明:显示一个彗星通过数据x,y,z确定的三维曲线. 【例1.80】 >>t=-20*pi:pi/50:20*pi; >>comet3(sin(t),cos(t),t) 可见到彗星头(一个小圆圈)沿着数据指定的轨道前进的动画图象,彗星轨道为整个函数所画的螺旋线. 格式三:fill3(X,Y,Z,C) ℅填充由参数X,Y,Z确定的多边形,参数C指定颜色. 图1.16 例1.79图形结果图1.17 例1.81图形结果 【例1.81】

>>X=[2,1,2;9,7,1;6,7,0]; >>Y=[1,7,0;4,7,9;0,4,3]; >>Z=[1,8,6;7,9,6;1,6,1]; >>C=[1,0,0;0,1,0;0,0,1] >>fill3(X,Y,Z,C) >>grid on 图形的结果如图1.17所示. 问题1.30:图1.17中每个三角形按什么规律画出的?(用X,Y,Z的对应列元素值为坐标画三角形)每个三角形内填充的颜色又有何规律?(用C 第i列元素值对应的颜色,从第i个三角形对应顶点向中心过渡)若C=[1,5,10;1,5,10;1,5,10],结果如何? 2.三维网格图 格式:mesh(X,Y,Z,C) ℅画出颜色由C指定的三维网格图. meshc(X,Y,Z,C) ℅画出带有等高线的三维网格图. meshz(X,Y,Z,C) ℅画出带有底座的三维网格图. 说明:若X与Y均为向量,n=length(X),m=length(Y), Z必须满足[m,n]=size(Z),则空间中的点(X(j),Y(i),Z(i,j))为所画曲面网线的交点,X 对应于Z的列,Y对应于Z的行;若X,Y,Z均为同维矩阵,则空间中的点(X(i,j),Y(i,j),Z(i,j))为所画曲面的网线的交点;矩阵C指定网线的颜色,MATLAB对矩阵C中的数据进行线性处理,以便从当前色图中获得有用的颜色,若C缺省,网线颜色和曲面的高度Z相匹配. 在三维作图常用到命令meshgrid,其功能是生成二元函数z=f(x,y)中x-y平面上的矩形定义域中数据点矩阵X和Y. 格式:[X,Y]= meshgrid(x,y). 说明:输入向量x为x-y平面上x轴的值,向量y为x-y平面上y轴的值.输出矩阵X为x-y平面上数据点的横坐标值,输出矩阵Y为x-y平面上数据点的纵坐标值. 【例1.82】 >> x=1:4; >> y=1:5; >> [x,y]=meshgrid(x,y) x = 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 y = 1 1 1 1

MATLAB仿真平面电磁波在不同媒介分界面上的入射

MATLAB 仿真平面电磁波在不同媒介分界面上的入射、反射和折射 一、实验目的: 1、进一步学习MATLAB ,初步掌握GUI 界面的编程。 2、通过编程实现电磁波仿真效果图。 3、进一步理解平面电磁波的入射、反射和折射现象 二、实验要求: 1、以电场为例,动态演示平面电磁波的传播情况。 2、可以任意设置媒介的介电常数和入射角。 3、考虑金属导体和空气的分界面平面电磁波的入射、反射情况。 三、实验原理: 电磁波从一种媒质入射到第二种媒质时,分界面使一部分能量反射回第一种媒质,另一部分能量折射到第二种媒质中,反射波和折射波得大小和相位取决于分界面两侧的媒质特性、极化方向和入射角大小等,当电磁波入射到理想导体表面时,会发生全反射。这一过程中包括的主要原理有以下三点。 1、正弦平面波在媒质分界面的反射和折射规律 波对分界面的入射是任意的,但为了方便,我们假设入射面与zox 面重合。 波在z>0时发生入射和反射,在z<0时发生折射并令空间任意一点r r 处 的 入 射 波、反射波和折射波场强为: 11 1(sin cos )00(sin cos )00(sin cos ) 00i i i i r r i t t jK r jK x z i i i jK r jK x z r r r jK r jK x z t t t E E e E e E E e E e E E e E e θθθθθθ--+--+--+?==?==??==? 图表 1 正弦波斜入射示意图 根据在z=0的界面上电场强度的切线分量相等的边界条件,有 (,,0)(,,0)(,,0)i r t E x y E x y E x y == 故必有 112sin sin sin i r t k k k θθθ== 反射定律: i r θθ= 折射定律: 12sin sin i r k k θθ= 2、 正弦平面波对理想介质的斜入射 ① 垂直极化波 垂直极化波对理想介质斜入射如图所示,由折射和反射定律,我们可以得到在任意媒质中的场强。 在第一煤质中

matlab绘制动态三维心形代码(蛋疼的情人节奉献)

Matlab绘制三维动态心形 It’s OK to send a pic to your girlfriend on Valentine's Day 情人节蛋疼玩意 效果图: 原始代码: %仅供参考,自助修改,原则上自己动手,要是非常强烈的要帮忙 %可以联系我的QQ 865802870 ,但愿我还在上面. Source code: %构造体积方程和坐标轴,画出图形;linspace(a,b,c)均匀生成介于a到b的c个值,c 的默认为100。Meshgrid生成矩阵网格。 [X,Y,Z] = meshgrid(linspace(-3,3,101)); %3D心型图方程如下; F = -X.^2.*Z.^3-(9/80).*Y.^2.*Z.^3+(X.^2+(9/4).*Y.^2+Z.^2-1).^3; hFigure = figure; sz = get(hFigure, 'Position'); set(hFigure, 'Position', [sz(1)-0.15*sz(3) sz(2) 1.3*sz(3) sz(4)]); set(hFigure,'color','w', 'menu','none') hAxes = axes('Parent',hFigure,'NextPlot','add',... 'DataAspectRatio',[1 1 1],... 'XLim',[30 120],'YLim',[35 65],'ZLim',[30 75]); view([-39 30]); axis off % 制作出动态的隐形效果; hidden on

% 画出网格,制作网格动态效果; % 快渲染心得背面: p = patch(isosurface(F,-0.001)); set(p,'FaceColor','w','EdgeColor','w'); % 构造Y-Z平面,,描完函数在该平面的点: for iX = [35 38 41 45 48 51 54 57 61 64 67] plane = reshape(F(:,iX,:),101,101); cData = contourc(plane,[0 0]); xData = iX.*ones(1,cData(2,1)); plot3(hAxes,xData,cData(2,2:end),cData(1,2:end),'r'); pause(.1), drawnow end % 构造X-Z平面,描完函数在该平面的点: for iY = [41 44 47 51 55 58 61] plane = reshape(F(iY,:,:),101,101); cData = contourc(plane,[0 0]); yData = iY.*ones(1,cData(2,1)); plot3(hAxes,cData(2,2:end),yData,cData(1,2:end),'r'); pause(.1), drawnow end % 构造X-Y平面,描完函数在该平面的点: for iZ = [36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 69 71] plane = F(:,:,iZ); cData = contourc(plane,[0 0]); startIndex = 1; if size(cData,2) > (cData(2,1)+1) startIndex = cData(2,1)+2; zData = iZ.*ones(1,cData(2,1)); plot3(hAxes,cData(1,2:(startIndex-1)),... cData(2,2:(startIndex-1)),zData,'r'); end zData = iZ.*ones(1,cData(2,startIndex)); plot3(hAxes,cData(1,(startIndex+1):end),... cData(2,(startIndex+1):end),zData,'r'); pause(.1), drawnow end %给三维心着色

matlab画三维曲面图

Matlab画三维曲面图 对于如下的数据,如何才能在matlab中画出三维图形. 620 0.03 110 620 0.07 112 630 0.07 119 645 0.02 210 650 0.02 200 650 0.03 230 650 0.06 145 650 0.08 155 655 0.01 180 655 0.06 145 660 0.05 150 680 0.02 175 680 0.04 170 680 0.06 145 680 0.08 155 x y z Matabl程序如下: %%定义数据 x=[620 620 630 645 650 650 650 650 655 655 660 680 680 680 680]; y=[0.03 0.07 0.07 0.02 0.02 0.03 0.06 0.08 0.01 0.06 0.05 0.02 0.04 0.06 0.08]; z=[110 112 119 210 200 230 145 155 180 145 150 175 170 145 155]; %%画图函数部分,参考https://www.360docs.net/doc/7011902335.html,/thread-128595-1-1.html cbboy编写的函数%% function PlotGriddata(x,y,z) mx=min(x); %求x的最小值 Mx=max(x); %求x的最大值 my=min(y); My=max(y); Nx=20; %定义x轴插值数据点数,根据实际情况确定 Ny=20; %定义y轴插值数据点数,根据实际情况确定 cx=linspace(mx,Mx,Nx);%在原始x数据的最大值最小值之间等间隔生成Nx个插值点 cy=linspace(my,My,Ny);%在原始数据y的最大值最小值之间等间隔生成Ny个插值点 cz=griddata(x,y,z,cx,cy','cubic');%调用matlab函数进行立方插值,插值方式还有'v4'、'linear' surf(cx,cy,cz); %meshz(cx,cy,cz) %绘制曲面

基于Matlab的电磁场图示化教学

目录 摘要 (1) 关键词 (1) Abstract (1) Key Words (1) 引言 (2) 1 Matlab的图示化技术 (2) 1.1 几个常用的绘图指令 (2) 1.2 具有两个纵坐标标度的图形 (2) 1.3 三维曲线 (3) 2 Matlab在静电场图示化中的应用 (3) 2.1 基本原理 (3) 2.2 等量同号点电荷的电场线的绘制 (4) 2.3 静电场中的导体 (6) 3 Matlab在恒定磁场图示化中的应用 (6) 3.1 电偶极子电磁场的Matlab图示与应用 (6) 3.2 两根载流长直导线在电磁场中的Matlab图示 (8) 3.3 运动的带电粒子在均匀电磁场中的Matlab图示 (9) 3.4 电磁波的Matlab图示 (11) 4 Matlab在时变电磁场仿真分析中的应用 (12) 4.1 Matlab图示化分析均匀平面波在理想介质中的传播 (12) 4.2 Matlab图示化分析矩形波导的场量分布 (14) 5 结语 (19) 致谢 (19) 参考文献 (20)

基于Matlab的电磁场图示化教学 自动化王丽洁 指导教师王庆兰 摘要:Matlab是由美国Mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。Matlab具有丰富的计算功能和科学计算数据的可视化能力,特别是应用偏微分方程工具箱在大学物理电磁学等各类物理场的数值仿真中具有无比的优势。本文将主要介绍Matlab在静电场图示化中的应用、Matlab在恒定磁场图示化中的应用以及Matlab在时变电磁场仿真分析中的应用。利用Matlab的图示化技术、利用Matlab分析电磁学,能够更为方便的实现电磁场图示化教学,能使复杂的问题大大简化,对阐述相关原理能起到很大的作用。 关键词:Matlab 图示化教学电磁场时变电磁场 The electromagnetic field of graphical teaching based on Matlab Student majoring in automation Wang Lijie Tutor Wang Qinglan Abstract:Matlab is published by the United States, the main face of the company Mathworks scientific computing, visualization and interactive program designed for high-tech computing environment. Matlab has a computing functions and rich scientific computing visualization capability of data, especially the application of partial differential equation toolbox has incomparable advantages in numerical simulation of university physics electromagnetism and other types of physical field. Mainly introduces the application of Matlab in electrostatic field, the graphic in Matlab in a constant magnetic field of graphical applications and Matlab application of electromagnetic simulation in the analysis of time. Using Matlab graphic technology, using the Matlab analysis of electromagnetism, can more convenient teaching, the implementation of the electromagnetic field shown can greatly simplify the complex problems, the paper related principle can play a big role. Key Words:Matlab; graphic teaching; electromagnetic field; time-varying electromagnetic field

matlab各种三维绘图及实例

Matlab绘制三维图形 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。 例绘制三维曲线。 程序如下: t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z); title('Line in 3-D Space'); xlabel('X');ylabel('Y');zlabel('Z'); 三维曲面 1.产生三维数据 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为: x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y); 语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。 2.绘制三维曲面的函数 surf函数和mesh函数的调用格式为: mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。 surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。 一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c 用于指定在不同高度下的颜色范围。 例绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下: [x,y]=meshgrid(0:0.25:4*pi); %在[0,4pi]×[0,4pi]区域生成网格坐标 z=sin(x+sin(y))-x/10; mesh(x,y,z); axis([0 4*pi 0 4*pi -2.5 1]); 此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。 例在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。 程序如下: [x,y]=meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2,2,1);

使用matlab绘制三维图形的方法

使用matlab 绘制三维图形的方法 三维曲线 plot3函数与plot 函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n),其中每一组x,y,z 组成一组曲线的坐标参数,选项的定义和plot 函数相同。当x,y,z 是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z 是同维矩阵时,则以x,y,z 对应列元素绘制三维曲线,曲线条数等于矩阵列数。 例 绘制三维曲线。 程序如下: t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z);grid title('Line in 3-D Space'); xlabel('X');ylabel('Y');zlabel('Z'); 如下图: -1 1 X Line in 3-D Space Y Z

三维曲面 1.产生三维数据 在MATLAB 中,利用meshgrid 函数产生平面区域内的网格坐标矩阵。其格式为: x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y); 语句执行后,矩阵X 的每一行都是向量x ,行数等于向量y 的元素的个数,矩阵Y 的每一列都是向量y ,列数等于向量x 的元素的个数。 2.绘制三维曲面的函数 surf 函数和mesh 函数的调用格式为: mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。 surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。 一般情况下,x,y,z 是维数相同的矩阵。x,y 是网格坐标矩阵,z 是网格点上的高度矩阵,c 用于指定在不同高度下的颜色范围。 例 绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下: [x,y]=meshgrid(0:0.25:4*pi); %在[0,4pi]×[0,4pi]区域生成网格坐标 z=sin(x+sin(y))-x/10; mesh(x,y,z); axis([0 4*pi 0 4*pi -2.5 1]); 如下图: -2.5 -2-1.5-1-0.500.51 此外,还有带等高线的三维网格曲面函数meshc 和带底座的三维网格曲面函数meshz 。其用法与mesh 类似,不同的是meshc 还在xy 平面上绘制曲面在z 轴方

相关文档
最新文档