实验一 MATLAB语言基础_第1页
实验一 MATLAB语言基础_第2页
实验一 MATLAB语言基础_第3页
实验一 MATLAB语言基础_第4页
实验一 MATLAB语言基础_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一目的:掌握MATLAB的基本使用方法;学会初步观察、分析MATLAB数值计算的误差及传播;掌握MATLAB的程序设计中各种语法的使用方法;通过学习初步能设计简单的MATLAB程序。重点:MATLAB的基本使用方法;

MATLAB的程序设计中各种语法的使用。难点:观察、分析MATLAB数值计算的误差;

MATLAB的程序设计中各种语法的使用,设计简单的

MATLAB程序一.MATLAB简介

MATLAB名字是由MATrix和LABoratory两个词的前三个字母组合而成的。它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件。被誉为“巨人肩上的工具”。由于使用Matlab编程运算与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言--如Basic、Fortran和C等那样难于掌握,用Matlab编写程序犹如在演算纸上排列出公式与求解问题,所以又被称为演算纸式科学算法语言。在这个环境下,对所要求解的问题,用户只需简单地列出数学表达式,其结果便以数值或图形方式显示出来。

MATLAB的含义是矩阵实验室(MATRIX

LABORATORY),主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵。MATLAB自问世以来,就以数值计算著称。MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使的MATLAB高度“向量化”。经过二十几年的完善和扩充,现已发展成为线性代数课程的标准工具。由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能比拟的。美国许多大学的实验室都安装有MATLAB供学习和研究之用。在那里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。工具箱实际上是对MATLAB进行扩展应用的一系列MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制、系统辨识、神经网络等。随着MATLAB版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。二.MATLAB工作环境

运行MATLAB的可执行文件,自动创建MATLAB指令窗(CommandWindow)。

如果你是个初学者,可以在指令窗键入demo,这可是学习的好帮手。?demol

一旦发现指令不知如何使用时,help命令将告诉你使用。例:?helpsinSINSine.SIN(X)isthesineoftheelementsofX.Overloadedmethodshelpsym/sin.m

在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如:>>(10*19+2/4-34)/2*3ans=234.7500MATLAB会将运算结果直接存入一变量ans,代表MATLAB运算後的答案,并显示其数值屏幕上。如果在上述的例子结尾加上”;”,则计算结果不会显示在指令视窗上,要得知计算值只须键入该变数值即可。

MATLAB可以将计算结果以不同的精确度的数字格式显示,我们可以在指令视窗上的功能选单上的Options(选项)

下选NumericalFormat(数字格式),或者直接在指令视窗键入以下的各个数字显示格式的指令。

»formatshort(这是默认的)MATLAB利用了↑↓二个游标键可以将所下过的指令叫回来重覆使用。按下↑则前一次指令重新出现,之后再按Enter键,即再执行前一次的指令。而↓键的功用则是往后执行指令。其它在键盘上的几个键如→←,Delete,Insert,其功能则显而易见,试用即知无须多加说明。三.变量及其命名规则

变量1.

MATLAB对变量名的大小写是敏感的。2.

变量的第一个字符必须为英文字母,而且不能超过31个字符。

3.

变量名可以包含下划线、数字,但不能为空格符、标点。预定义的变量

ans预设的计算结果的变量名epsMATLAB定义的正的极小值=2.2204e-16pi内建的π值inf∞值,无限大

(1/0)NaN非数,无法定义一个数目

(0/0)i或

j虚数单位i=j=(-1)^(1/2)而键入clear则是清除所有定义过的变量名称。四.MATLAB赋值

l

表达式MATLAB书写表达式的规则与“手写算式”差不多相同。如果一个指令过长可以在结尾加上...(代表此行指

令与下一行连续),例如>>?3*...6ans=18比如将23赋值给变量a:>>a=23五.MATLAB常用数学函数

l

.三角函数和双曲函数名称含义名称含义名称含义sin正弦csc

余割atanh

反双曲正切cos

余弦asec

反正割acoth

反双曲余切tan正切acsc

反余割sech

双曲正割cot余切sinh

双曲正弦csch

双曲余割asin

反正弦cosh

双曲余弦asech

反双曲正割acos

反余弦tanh

双曲正切acsch

反双曲余割atan

反正切coth

双曲余切

acot

反余切asinh

反双曲正弦

sec正割acosh

反双曲余弦

2.指数函数名称含义名称含义名称含义expE为底的指数log1010为底的对数pow22的幂log自然对数log22为底的对数sqrt

平方根3.复数函数名称含义名称含义名称含义abs绝对值conj复数共轭real复数实部angle相角imag

复数虚部

4.取整函数和求余函数名称含义名称含义ceil向+∞取整rem

求余数fix向0取整round向靠近整数取整floor向-∞取整sign符号函数mod模除求余

5.矩阵变换函数名称含义名称含义fiplr

矩阵左右翻转

diag

产生或提取对角阵fipud

矩阵上下翻转

tril

产生下三角fipdim

矩阵特定维翻转

triu

产生上三角Rot90矩阵反时针90翻转

6.其他函数名称含义名称含义min

最小值max

最大值mean

平均值median

中位数std

标准差diff

相邻元素的差sort

排序length

个数norm

欧氏(Euclidean)长度sum

总和prod

总乘积dot

内积cumsum

累计元素总和cumprod

累计元素总乘积cross

外积

六.MATLAB系统命令

命令含义help在线帮助helpwin

在线帮助窗口helpdesk在线帮助工作台demo运行演示程序ver

版本信息readme显示Readme文件who显示当前变量whos

显示当前变量的详细信息clear清空工作间的变量和函数pack整理工作间的内存load把文件调入变量到工作间save把变量存入文件中quit/exit退出MATLABwhat显示指定的matlab文件lookfor

在HELP里搜索关键字which定位函数或文件path获取或设置搜索路径echo命令回显cd

改变当前的工作目录pwd

显示当前的工作目录dir显示目录内容unix

执行unix命令dos执行dos命令!执行操作系统命令computer显示计算机类型七.MATLAB语言中的关系与逻辑运算

在执行关系及逻辑运算时,MATLAB将输入的不为零的数值都视为真(True)而为零的数值则视为假(False)。运算的输出值将判断为真者以1表示而判断为假者以0表示。各个运算符须用在二个大小相同的阵列或是矩阵中的比较。关系运算指令含义<

小于

<=

小于等于

>

大于

>=

大于等于

==

等于

~=

不等于

?a=1:2:11;

?b=2:1:7;?a>bans=001111?a==bans=010000?a>=bans=011111

?a-(b>4)ans=1356810

逻辑运算

指令

含义

&

逻辑

and(且)|

逻辑

or(或)~

逻辑

not(非)(a<2)|(b>6)ans=100001c=a+(a>3)|(b<6)c=111111

逻辑关系函数

指令含义

xor

不相同就取1,否则取0any只要有非0就取1,否则取0all全为1取1,否则为0isnan

为数NaN取1,否则为0isinf

为数inf取1,否则为0isfinite

有限大小元素取1,否则为0ischar

是字符串取1,否则为0isequal

相等取1,否则取0ismember

两个矩阵是属于关系取1,否则取0isempty

矩阵为空取1,否则取0isletter

是字母取1,否则取0(可以是字符串)isstudent

学生版取1isprime

质数取1,否则取0isreal

实数取1,否则取0isspace

空格位置取1,否则取0isequal(a,b)ans=0

isreal(a)ans=1isstudent

ans=

0

八.矩阵及运算

1.

数组

MATLAB的运算事实上是以数组(array)及矩阵(matrix)方式在做运算。建立一个数组时,如果是要个别键入元素,须用中括号[]将元素置于其中。数组为一维元素所构成,而矩阵为多维元素所组成,例如»x=[12345678];

%一维

1x8阵列

»x=[12345678;4567891011];

%二维

2x8矩阵,以;区隔各列的元素

»x=[12345678

%二维2x8矩阵,各列的元素分二行键入4567891011];»x(3)

%

x的第三个元素ans=2

»x([125])%x的第一、二、五个元素ans=143x(1:5)%x的第前五个元素ans=14253»x(10:end)%x的第十个元素后的元素ans=869710811»x(10:-1:2)%x的第十个元素和第二个元素的倒排ans=857463524

»x(find(x>5))%x中大于5的元素ans=6

7

8

6

9

7

10

8

11»x(4)=100%给x的第四个元素重新给值x=12345678410067891011»x(3)=[]%删除第三个元素x=Columns1through1214100364758697Columns13through1510811»x(16)=1%加入第十六个元素x=Columns1through1214100364758697Columns13through161081112

建立数组上面的方法只适用于元素不多的情况,但是当元素很多的时候,则须采用以下的方式:»x=(0:0.02:1);

%以起始值=0、增量值=0.02、终止值=1的矩阵

»x=linspace(0,1,100);

%利用linspace,以区隔起始值=0终止值=1之间的元素数目=100»a=[]%空矩阵

a=[]»zeros(2,2)%全为0的2阶矩阵

ans=00

0

0

»ones(3,3)%全为1的3阶矩阵

ans=111111111»rand(2,4);随机矩阵

»a=1:7,b=1:0.2:5;%更直接的方式

»c=[ba];

%可利用先前建立的阵列

a及阵列

b,组成新阵列

»a=1:1:10;»b=0.1:0.1:1;

»a+b*I%复数阵列

ans=Columns1through41.0000+0.1000i2.0000+0.2000i3.0000+0.3000i4.0000+0.4000iColumns5through85.0000+0.5000i6.0000+0.6000i7.0000+0.7000i8.0000+0.8000iColumns9through109.0000+0.9000i10.0000+1.0000i

九.矩阵的运算

经典的算术运算符。经

符MATLAB表达式加+a+b减-a-b乘*a*b除/或

\a/b或a\b幂^a^b»a=1:1:10;»b=0:10:90;»a+b

ans=11223344556677889100

»a-bans=1-8-17-26-35-44-53-62-71-80»a.*b%注意这里a后加了个“.”ans=02060120200300420560720900»a/bans=0.

1158»a\bans=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000123456789

»b./aans=Columns1through705.00006.66677.50008.00008.33338.5714Columns8through108.75008.88899.0000»a.\bans=Columns1through705.00006.66677.50008.00008.33338.5714Columns8through108.75008.88899.0000»a.^2ans=149162536496481100

说明:在这里特别要注意一下有没有加点“.”之间的区别,这些算术运算符所运算的两个阵列是否需要长度一致。

矩阵转置运算通过在矩阵变量后加“’”的方法来表示转置运算

?a=1:1:10;

?b=0:10:90;?a'ans=12345678910

>>c=a+b*i;>>c'ans=1.00002.0000-10.0000i3.0000-20.0000i4.0000-30.0000i

5.0000-40.0000i6.0000-50.0000i7.0000-60.0000i8.0000-70.0000i9.0000-80.0000i10.0000-90.0000i

十.M文件

M文件用MATLAB语言编写的程序,称为M文件。

M文件有两类:命令文件和函数文件。命令文件:没有输入参数,也不返回输出参数。函数文件:可以输入参数,也可返回输出参数。1.M文件的建立与编辑建立新的M文件:

从MATLAB命令窗口的File菜单中选择New菜单项,再选择M-file命令。

M文件编辑已有的M文件:从MATLAB命令窗口的Flie菜单中选择OpenM-file命令。2.命令文件将需要运行的命令编辑到一个命令文件中,然后在MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。【例1】

建立一个命令文件将变量a,b的值互换。M文件

e31.m文件:a=1:9;b=[11,12,13;14,15,16;17,18,19];c=a;a=b;b=c;ab

在MATLAB的命令窗口中输入e31,将会执行该命令文件。十一.数据的输入输出1.input函数:用于向计算机输入一个参数。调用格式:A=input(提示信息,选项);注:‘s’选项,则允许用户输入一个字符串。例如想输入一个人的姓名,可采用命令

xm=input('What''syourname:','s')【例2】

求一元二次方程ax2+bx+c=0的根。数据的输入输出

a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]将该程序以aa.m文件存盘,然后运行aa.m文件。2.pause函数:暂停程序的执行。调用格式:pause(延迟秒数)注:如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。数据的输入输出

3.disp函数:命令窗口输出函数。调用格式:disp(输出项)注:输出项为字符串或矩阵。例如

A='Hello,MATLAB';

disp(A)输出为:Hello,MATLAB十二.程序设计(一)选择结构选择结构的语句有if语句和switch语句。1.if语句

格式一:if条件语句组

end程序设计格式二:if条件语句组1else

语句组2end(一)选择结构格式三:if条件1

语句组1elseif条件2

语句组2……elseif条件m

语句组melse

语句组m+1end程序设计【例4】输入三角形的三条边,求面积。

A=input('请输入三角形的三条边:');ifA(1)+A(2)>A(3)&A(1)+A(3)>A(2)&A(2)+A(3)>A(1)p=(A(1)+A(2)+A(3))/2;s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));

disp(s);else

disp('不能构成一个三角形。')end运行:请输入三角形的三条边:[456]9.9216程序设计(一)选择结构【例5】输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。c=input('','s');ifc>='A'&c<'Z'disp(setstr(abs(c)+1));elseifc>'a'&c<='z'disp(setstr(abs(c)-1));else

disp(c);end程序设计(一)选择结构2switch语句switch语句根据变量或表达式的取值不同,分别执行不同的语句。其格式为:

switch表达式

case值1

语句组1case值2语句组2……case值m

语句组motherwise

语句组m+1end程序设计(一)选择结构【例6】根据变量num的值来决定显示的内容。

num=input('请输入一个数');switchnumcase-1

disp('Iamateacher.');case0

disp('Iamastudent.');case1

disp('Youareateacher.');otherwise

disp('Youareastudent.');end程序设计(一)选择结构(二)循环结构实现循环结构的语句:for语句和while语句。1.for语句:格式:for循环变量=表达式1:表达式2:表达式3

循环体语句

end注:其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。程序设计2.while语句格式为:

while(条件)

循环体语句

end程序设计(二)循环结构3.循环的嵌套如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。多重循环的嵌套层数可以是任意的。可以按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。程序设计(二)循环结构【例7】

求[100,1000]以内的全部素数。

n=0;form=100:1000flag=1;j=m-1;i=2;whilei<=j&flagifrem(m,i)==0flag=0;end

i=i+1;endifflagn=n+1;prime(n)=m;endendprime%变量prime存放素数程序设计(二)循环结构prime=101103107109113127131137139149151157163167173179181191193197199211223227229233239241251257263269271277281283293307311313317331337347349353359367373379383389397401409419421431433439443449457461463467479487491499503509521523541547557563569571577587593599601607613617619631641643647653659661673677683691701709719727733739743751757761769773787797809811821823827829839853857859863877881883887907911919929937941947953967971977983991997共143个素数。十三.函数文件函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。事实上,MATLAB提供的标准函数大部分都是由函数文件定义的。函数文件1.函数文件格式函数文件由function语句引导,其格式为:

function输出形参表=函数名(输入形参表)

注释说明部分函数体注:其中函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于1个时,则应该用方括号括起来。【例8】

编写函数文件求小于任意自然数n的Fibonacci数列各项。

functionf=ffib(n)%用于求Fibonacci数列的函数文件

%f=ffib(n)%1999年9月30日编

f=[1,1];i=1;whilef(i)+f(i+1)<nf(i+2)=f(i)+f(i+1);i=i+1;end将以上函数文件以文件名ffib.m存盘,然后在MATLAB命令窗口输入以下命令,可求小于2000的Fibonacci数。

ffib(2000)函数文件2.函数调用函数文件编制好后,就可调用函数进行计算了。如上面定义ffib函数后,调用它求小于2000的Fibonacci数。函数调用的一般格式是:

[输出实参表]=函数名(输入实参表)函数文件【例9】

利用函数文件,实现直角坐标(x,y)与极坐标(γ,θ)之间的转换。函数文件tran.m:

function[gama,theta]=tran(x,y)

gama=sqrt(x*x+y*y);theta=atan(y/x);

调用tran.m的命令文件main1.m:

x=input('Pleaseinputx=:');y=input('Pleaseinputy=:');[gam,the]=tran(x,y);gamthe已知转换公式为:极坐标的矢径:γ=sqrt(x^2+y^2)

极坐标的幅角:θ=atan(y/x)函数文件【例10】

利用函数的递归调用,求n!。

functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论