MATLAB电磁场实验指导书.docx

上传人:b****8 文档编号:9364380 上传时间:2023-02-04 格式:DOCX 页数:30 大小:120.36KB
下载 相关 举报
MATLAB电磁场实验指导书.docx_第1页
第1页 / 共30页
MATLAB电磁场实验指导书.docx_第2页
第2页 / 共30页
MATLAB电磁场实验指导书.docx_第3页
第3页 / 共30页
MATLAB电磁场实验指导书.docx_第4页
第4页 / 共30页
MATLAB电磁场实验指导书.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

MATLAB电磁场实验指导书.docx

《MATLAB电磁场实验指导书.docx》由会员分享,可在线阅读,更多相关《MATLAB电磁场实验指导书.docx(30页珍藏版)》请在冰豆网上搜索。

MATLAB电磁场实验指导书.docx

MATLAB电磁场实验指导书

电磁场实验仿真指导书

1、Matlab基础

2、实验内容

2.1预习点电荷电场分布

2.2实验一电偶极子电场分布仿真

2.3实验二特殊边界条件的电场分布

2.4实验三直导线的磁场分布

2.5实验四磁偶极子的磁场分布

 

1MATLAB基础

1.1简介

MATLAB是一门计算机程序语言,取名源于MatrixLaboratory,意在以矩阵方式处理数据。

一般认为MATLAB的典型应用包括:

数值计算与分析、符号运算、建模与仿真、数据可视化、图形处理及可视化、基于图形用户界面的应用程序开发。

MATLAB7.3.0启动后界面如图1所示。

图1MATLAB7.3.0启动后界面

命令窗口(CommandWindow):

(1)用于执行MATLAB命令,正常情况下提示符为“>>”,表示MATLAB进入工作状态。

(2)在提示符后输入运算指令和函数调用等命令(不带“;”),MATLAB将迅速显示出结果并再次进入准备工作状态。

(3)若命令后带有“;”,MATLAB执行命令后不显示结果。

(4)在准备工作状态下,如果按上下键,MATLAB会按顺序依次显示以前输入的命令,若要执行它,则直接回车即可。

工作空间(Workspace):

(1)显示计算机内存中现有变量的名称、类型、结构及其占用子节数等。

(2)如果直接双击某变量,则弹出ArrayEditor窗口供用户查看及修改变量内容。

(3)该窗口上有工具条支持用户将某变量存储到文件中或者从文件中载入某变量。

命令历史记录(CommandHistory):

(1)保存并显示用户在命令窗口中输入过的命令,以及每次启动MATLAB的时间等信息。

(2)若双击某条命令记录,则MATLAB会再次执行该命令。

当前路径窗口(CurrentDirectory):

(1)先是当前路径内的所有文件。

(2)用户可以在这里新建或删除一个文件,也可以双击一个文件,在编辑/调试窗口中打开。

设置当前路径(CurrentDirectory):

(1)用于选择当前工作路径。

(2)可以在命令窗口中输入文件名来直接调用工作路径下的文件。

使用MATLAB时获取帮助的两种方法:

一是直接在命令窗口中输入help函数名或命令;二是在帮助窗口中浏览或搜索相应信息。

还可以参考MATLAB的Demo程序来学习MATLAB编程。

1.2基本语法

(一)变量及其赋值

1、标识符与数

(1)标识符是标识变量名、常量名、函数名和文件名的字符串的总称。

在MATLAB中,变量和常量的标志符最长允许19个字符;函数和文件名通常不超过8个字符(受操作系统文件管理器的限制)。

这些字符包括全部的英文字母(区分大小写)、阿拉伯数字和下划线等符号。

标识符的第一个字符必须是英文字母。

(2)MATLAB中只有双精度一种数据格式,它把简化编程作为主要目标,以运算速度和内存消耗为代价,省去了多种数据格式,唯一采用双精度格式进行数据的存储和运算。

虽然它的数据格式只有一种,但是为了人机交互方便,输出显示格式有8种。

下表显示了在各格式控制命令下圆周率∏的显示结果。

MATLAB命令

显示形式

说明

formatlong

3.14159265358979

16位十进制数

formatlonge

3.141592653589793e+000

16位十进制数加指数

formatshort(默认)

3.1416

二位整数,四位小数

formatshorte

3.1416e+000

5位十进制数加指数

formathex

400921fb54442d18

16位十六进制数

formatbank

3.14

两位小数

format+

+

正、负或零

formatrat

355/113

分数近似

MATLAB默认的显示格式是formatloose(稀疏格式),屏幕的显示会有很多空行,而如果用显示格式命令formatcompact(紧凑格式),则会用紧凑格式显示。

2、矩阵及其元素的赋值

(1)MATLAB中的变量或常量都代表矩阵,标量应看作1×1阶的矩阵。

(2)矩阵的赋值:

①矩阵的值放在方括号中;

②一行中各元素之间以逗号或者空格分开,不同的行则以分号隔开;

③句的结尾可用回车符或逗号,此时会立即显示运算结果。

如果不希望显示结果,就以分号结尾。

此时运算仍然执行,只是不显示。

④变量的元素用圆括号“()”中的数字(也称为下标)来注明,一维矩阵(也称为数组或向量)中的元素用一个下标表示,二维的矩阵可有两个下标数,以逗号分开。

赋值语句一般形式为:

变量=表达式(或数)

例如:

输入语句

a=[123;456;789]

则显示结果为

a=

123

456

789

Ø元素可以用表达式代替。

如输入x=[-1.3sqrt(3)(1+2+3/5*4)]

则显示结果为

x=

-1.30001.73214.8000

Ø可以单独给矩阵的元素赋值。

如x

(2)=1.7321,a(2,3)=6等。

如果赋值元素的下标超出了原来矩阵的大小,矩阵的行列会自动扩展。

跳空的元素会被自动赋值为0。

如x(5)=abs(x

(1))

则得x=-1.30001.73214.800001.3000

又如键入a(4,3)=6.5,则得

a=

1.00002.00003.0000

4.00005.00006.0000

7.00008.00009.0000

006.5000

Ø给全行赋值,可用冒号。

如给a的第5行赋值。

键入a(5,:

)=[5,4,3]得

a=

1.00002.00003.0000

4.00005.00006.0000

7.00008.00009.0000

006.5000

5.00004.00003.0000

Ø要取出a的第2、4行及第1、3列交点上的元素取出,构成一个新矩阵b。

可键入b=a([2,4],[1,3])得

b=

4.00006.0000

06.5000

Ø要抽除a中的第2、4、5行,可利用空矩阵[](指没有元素的矩阵,对任何一个矩阵赋值[],就是使它的元素都消失,注意它与“零矩阵”不同)。

键入a([2,4,5],:

)=[]得

a=

123

789

对于“变量=表达式(或数)”的赋值形式,如果不要等式左端而只剩下右端,则MATLAB会自动给出一个临时变量ans,把右端的结果暂存于ans中。

例如键入a/7得

ans=

0.14290.28570.4286

1.00001.14291.2857

3、复数矩阵、运算及其赋值

(1)MATLAB的每一个元素都可以是复数,复数的虚数部分用i或j表示,这是在MATLAB启动时就在内部设定的。

MATLAB中所有的运算符和函数都对复数有效。

例如:

键入c=3+5.2i或c=3+5.2j得

c=

3.0000+5.2000i

(2)复数矩阵有两种赋值方法。

Ø对复数矩阵的元素逐个赋值。

如键入z=[1+2i,3+4i;5+6i,7+8i]得

z=

1.0000+2.0000i3.0000+4.0000i

5.0000+6.0000i7.0000+8.0000i

Ø对其实部矩阵和虚部矩阵分别赋值。

如键入z=[1,3;5,7]+[2,4;6,8]*i得

z=

1.0000+2.0000i3.0000+4.0000i

5.0000+6.0000i7.0000+8.0000i

注意:

①只有数字与i的乘积可以省略乘号,在上述矩阵式中若省略乘号*,就会出错。

②如果在前面程序中曾给i或j赋过其他值,则i或j已不是虚数符号,那么这些虚数赋值语句就不对了。

此时应键入cleari,j,即把原赋的i,j清掉,然后再执行复数赋值语句。

(3)复数矩阵的转置、共轭运算

Ø函数conj对矩阵的每个元素求共轭,即把各元素的虚部反号。

Ø运算符'对矩阵作共轭和转置,即把其行列互换,同时把各元素的虚部反号。

Ø因此,如果只求转置而不要共轭,就把conj和'结合起来使用。

例如键入w=z',u=conj(z),v=conj(z)'得

w=

1.0000-2.0000i5.0000-6.0000i

3.0000-4.0000i7.0000-8.0000i

u=

1.0000-2.0000i3.0000-4.0000i

5.0000-6.0000i7.0000-8.0000i

v=

1.0000+2.0000i5.0000+6.0000i

3.0000+4.0000i7.0000+8.0000i

4、基本矩阵

Ø单位矩阵eye(n)是n×n阶的方阵,其对角线上的元素为1,其余元素均等于0。

Ø全0矩阵zeros(m,n)是m×n的所有元素均为0的矩阵。

Ø全1矩阵ones(m,n)是m×n的所有元素均为1的矩阵。

Ø均分向量linspace(a,b,n)是在a与b之间均匀地产生n个点值,形成n维向量。

如:

键入f1=ones(3,2),f2=zeros(2,3),f3=eye

(2)得

f1=

11

11

11

f2=

000

000

f3=

10

01

键入f4=linspace(0,1,5)得

f4=

00.25000.50000.75001.0000

Ø大矩阵可由小矩阵组成,但必须其行列数正确,恰好填满全部元素。

如键入f5=[111;222;333]得

f5=

111

222

333

则键入fb=[f1,f5;f3,f2]可得

fb=

11111

11222

11333

10000

01000

(二)矩阵的初等运算

1、矩阵的加减乘法

(1)矩阵加减法

两矩阵相加(减)就是其对应元素的相加(减),通过+、-运算符实现,要求相加(减)的两个矩阵的结构必须相同。

用MATLAB的size语句来检查结构是否相同。

例如:

键入[m,n]=size(fb)得

m=

5

n=

5

当两个矩阵相加(减)时,如果有一个是标量,则MATLAB承认算式有效,并自动将该标量扩展成同结构的等元素矩阵,再进行加(减)运算。

例如:

键入x=[-101];y=x-1得

y=

-2-10

对于一维矩阵(数组),可以用length语句来求其长度,它不区分列或行,只有一个输出量,而size有两个输出量,所以,作加减法的结构检验时只能用size。

(2)矩阵乘法

n×p的矩阵A与p×m的矩阵B的乘积C是一个n×m的矩阵,通过运算符*实现。

p是A矩阵的列数,也是B矩阵的行数,称为这两个相乘矩阵的内阶数,这里要注意,两矩阵相乘的必要条件是它们的内阶数相等。

如果两个相乘的矩阵有一个是标量,则MATLAB不检查其内阶数,而用该标量乘以矩阵的每个元素。

若把y转置,即y’为3×1的矩阵,而x是1×3的矩阵,则x*y’的内阶数相等为3

键入x*y’得

ans=2

该式子称为x左乘y’。

如果使x右乘y’,则y’*x内阶数为1,

键入y’*x得

ans=

20-2

10-1

000

所以要注意左乘与右乘结果一般不同,只有单位矩阵例外,单位矩阵乘以任何矩阵,无论左乘还是右乘,其乘积仍等于该矩阵,但要保证单位矩阵的阶数与相乘矩阵的阶数相等。

eye(n)*A=A

A*eye(n)=A

2、矩阵除法及线性方程组的解

(1)线性代数中没有除法,只有逆矩阵,矩阵的除法是MATLAB从逆矩阵的概念引伸来的。

有左除和右除两种情况。

B左除矩阵D相当于矩阵B左乘矩阵D的逆矩阵,记作D\B。

左除条件是:

两矩阵的行数必须相等。

(D*X=B,X=D-1*B=D\B,可见需要D与B的行数相等)

B右除矩阵D相当于矩阵B右乘矩阵D的逆矩阵,记作B/D。

右除条件是:

两矩阵的列数必须相等。

(X*D=B,X=B*D-1=B/D,可见需要D与B的列数相等)

(2)矩阵除法可以用来方便地解线性方程组。

例如要求下列方程组的解x=[x1;x2;x3]。

6x1+3x2+4x3=3

-2x1+5x2+7x3=-4

8x1-4x2-3x3=-7

此方程组可以写成矩阵形式Ax=B,求解的MATLAB程序为

A=[634;-257;8-4-3];B=[3;-4;-7];x=A\B得

x=

0.6000

7.0000

-5.4000

下面来看矩阵左右乘除的一些示例。

设A=[123;456],B=[240;135],D=[147;852;360],即

A=

123

456

B=

240

135

D=

147

852

360

则其乘除的结果见下表。

算式

结果

A*B

?

?

?

Errorusing==>*

Innermatrixdimensionsmustagree.(内阶数必须相等)

A’*B

61620

92325

123030

A*B’

1022

2849

D\A

?

?

?

Errorusing==>\

Matrixdimensionsmustagree.(行数必须相等)

D\A’

-0.03700

0.51851.0000

-0.14810

A/D

0.40740.07410.0000

0.74070.40740.0000

3、矩阵的乘方和幂次函数

MATLAB中只有运算符*、/、\、^和指数函数expm、对数函数logm、开方函数sqitm是把矩阵作为一个整体来运算的,其他所有的MATLAB函数都是对矩阵中的元素分别进行运算的,称为“元素群运算”,将在后面讨论。

(1)幂次运算时,指数和底数不能同时为矩阵,或者说指数和底数至少一个必须为标量;

(2)指数或底数为矩阵时,必须是方阵,以保证矩阵相乘的内阶数相等;

(3)注意:

sqrtm、expm、logm都是针对矩阵的运算,而sqrt、exp、log是针对矩阵元素的群运算,不要混淆。

下面来看一些矩阵运算的示例,其中D=[147;852;360],s=[12;34]即

D=

147

852

360

s=

12

34

键入语句

输出结果

说明

D^2

546615

546966

514233

按矩阵运算

2.^D

216128

256324

8641

按元素群运算

D^s

?

?

?

Errorusing==>^

Atleastoneoperandmustbescalar.

底数和指数不能同时为矩阵

u1=sqrtm(s)

0.5537+0.4644i0.8070-0.2124i

1.2104-0.3186i1.7641+0.1458i

按矩阵运算

u1*u1=s检验

u2=sqrt(s)

1.00001.4142

1.73212.0000

按元素群运算

u2*u2≠s,u2.*u2=s

v1=expm(s)

51.969074.7366

112.1048164.0738

按矩阵运算

logm(v1)=s

v2=exp(s)

2.71837.3891

20.085554.5982

按元素群运算

log(v1)=s

logm(D)

1.2447-0.91702.8255

1.60442.5760-1.9132

-0.75391.13721.6724

按矩阵运算

log(D)

01.38631.9459

2.07941.60940.6931

1.09861.7918-Inf

按元素群运算

4、矩阵结构形式的提取与变换

设矩阵A=[8160;3571;4922]即

A=

8160

3571

4922

函数名

功能

语句

结果

fliplr

矩阵左右翻转

B=fliplr(A)

0618

1753

2294

flipud

矩阵上下翻转

B=flipud(A)

4922

3571

8160

reshape

阶数重组(元素总数不变)

B=reshape(A,2,6)

845621

319702

tril

取矩阵的左下三角部分

B=tril(A)

8000

3500

4920

triu

取矩阵的右上三角部分

B=triu(A)

8160

0571

0022

将元素按列取出排成一排

B=A(:

)’

B=834159672012

(三)元素群运算

1、数组及其赋值

数组通常是指单行或单列的矩阵。

MATLAB提供两种为等间隔数组赋值的简易方法。

(1)用两个冒号组成等增量语句,其格式为:

t=[初值:

增量:

终值]或者t=初值:

增量:

终值。

如:

键入t=[0:

0.02:

1]或t=0:

0.02:

1得

t=00.20000.40000.60000.80001.0000

键入t=[10:

-3:

-5]或t=10:

-3:

-5得

t=10741-2-5

当增量为1时,该增量可以略去不写,变成t=[初值:

终值]或t=初值:

终值。

键入t=1:

6或者t=[1:

6]

t=123456

(2)用linspace函数。

调用格式为:

linspace(初值,终值,点数)。

如:

键入linspace(11010)得

ans=12345678910

即将1到10之间等分为10个点,或者说等分为9份。

2、元素群的四则运算和幂次运算

元素群运算也就是矩阵中所有元素按照单个元素进行运算。

在运算符*、/、\、^前加上一个点符号“.”,就表示做元素群运算。

参与元素群运算的两个矩阵必须是同阶的(只有标量除外,它会自动扩展为同阶矩阵参与运算)。

设X=[1,2,3];Y=[4,5,6]

运算式

输出结果

Z=X.*Y

Z=41018

Z=X.\Y

Z=4.00002.50002.0000

Z=X.^Y

Z=132729

Z=X.^2

Z=149

Z=2.^[XY]

Z=248163264

 

(四)运算符

MATLAB中的数学运算符

名称

说明

名称

说明

+-

矩阵加,矩阵减

*

矩阵乘

/\

矩阵右除,矩阵左除

^

矩阵求幂

.*.^

群乘,群求幂

./.\

数组右除,数组左除

'.'

共轭转置,转置

=

赋值

MATLAB中的比较和逻辑运算符

名称

说明

名称

说明

==

等于

~=

不等于

>>=

大于,大于等于

<<=

小于,小于等于

&

|

~

xor(a,b)

a和b异或

any(a)

a中有元素非零则为真

all(a)

a中所有元素都非零则为真

1.3M文件及程序调试

一、主程序文件

1、格式及要求

(1)程序开头

Ø最开始一般是注释行,说明程序用途、对输入数据的要求等。

注释行必须以%开始,表明是注释行而不是命令行,计算机不会处理以%开头的任何内容。

当然,在命令行后也可以%引导注释语句;注释可以用汉字。

MATLAB规定,在键入“help文件名”时,屏幕上会将该文件中以%起头的最前面几行的内容显示出来,使用户知道如何使用。

Ø程序命令部分以clear、closeall等语句开始,用来清除掉工作空间中原有的变量和图形,避免其他已执行的程序残留数据对本程序的影响。

CLEARremovesallvariablesfromtheworkspace.

CLOSEALLclosesalltheopenfigurewindows.

(2)程序主体

Ø如果文件中有在子程序中与主程序共用的全局变量,应在程序的起始部分注明。

其语句是:

global变量名1变量名2…

Ø为改善可读性,应注意流程控制语句的缩进及与end的对应关系。

Ø程序中必须都用半角英文字母和符号(只有引号括住的部分和%号后的内容可用汉字),否则程序执行不通甚至会死机,因此一般在键入程序时,最好从头到尾用英文,在程序调试完毕后再插入汉字。

(3)文件名及文件存储

Ø按照MATLAB标志符要求起文件名,并加上后缀m。

Ø文件名即为MATLAB的调用命令。

Ø文件名中不允许用汉字。

Ø存储目录应位于MATLAB的搜索路径下。

ØMATLAB的搜索路径不应出现汉字路径名。

(4)程序执行

完成主程序文件编制后,在MATLAB的命令窗中键入此程序的文件名后,系统就会执行文件中的程序,主程序文件中的语句将对工作空间中的所有数据进行运算操作。

2、示例

列出求素数的程序。

素数即为只能被它自身和1除净的数。

程序如下:

%求素数(primenumber)的程序

clear,closeall%清除工作空间中原有的变量和图形

N=input(‘N=’),x=2:

N;%列出从2到N的全部自然数

foru=2:

sqrt(N)%依次列出除数(最大到N的平方根)

n=find(rem(x,u)==0&x~=u);%找到能被u除净而u不等于x的数的序号

x(n)=[];%剔除该数

end,x%循环结束,显示结果

以prime.m为名存入系统即可执行。

给出N=40,结果为

x=23571113171923293137

3、常用的人机交互命令

在执行主程序文件时,往往希望在适当的地方对程序的运行进行观察或者干预(尤其在调试程序的时候),这时就需要人机交互命令。

介绍常用的下面几条:

(1)input('提示符’)程序执行到此处暂停,在屏幕上显示引号中的字符串。

要求用户输入数据。

如程序为X=input(‘X=’),则会在屏幕上显示X=,输入的数据将赋给X。

数据输入后,程序继续运行。

Input命令也可以接受字符,其格式为Y=input(‘提示符’,’s’),此时Y将等于输入的字符串。

(2)pause(n)程序执行到此处,暂停n秒,再继续执行。

如果没有括号参数,则等待用户键入任意键后才继续执行。

(3)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1