Matlab编程入门-下课件_第1页
Matlab编程入门-下课件_第2页
Matlab编程入门-下课件_第3页
Matlab编程入门-下课件_第4页
Matlab编程入门-下课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

专题三Matlab编程入门(2)2023/7/221Matlab编程入门

Matlab

编程简介

Matlab作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算、符号计算、矩阵运算能力和丰富的绘图功能,同时也具有和C、FORTRAN

等高级语言一样进行程序设计。在Matlab

程序设计中,要充分利用Matlab数据结构的特点,提高编程效率。利用Matlab

的程序控制功能,可以将有关Matlab

命令编成程序存储在一个文件中(M

文件),然后在命令窗口中运行该文件,Matlab

就会自动依次执行文件中的命令,直到全部命令执行完毕。2023/7/222中国计量学院理学院lxy

M文件是由若干Matlab命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。

M文件根据调用方式的不同可以分为两类:

Script:脚本文件/命令文件

Function:函数文件M文件

M

文件以.m

为扩展名。2023/7/223中国计量学院理学院lxyM文件的建立与打开新建一个M文件菜单操作(FileNewM-File

)命令操作

(edit

M文件名)命令按钮

(

快捷键

)打开已有的M文件菜单操作

(FileOpen

)命令操作(edit

M文件名)命令按钮

(

快捷键

)双击M

文件2023/7/224中国计量学院理学院lxy在命令窗口中输入f2cs,即可执行该M

文件。例:编写一个脚本文件将华氏温度转化为摄氏温度脚本文件举例clear;%清除当前工作空间中的变量f=input('PleaseinputFahrenheittemperature:');c=5*(f-32)/9;fprintf('Thecentigradetemperatureis%g\n',c);新建一个M

文件

f2cs.m,内容如下:脚本文件运行后,文件中所产生的所有变量都驻留在Matlab当前工作空间,可以用whos

查看。2023/7/225中国计量学院理学院lxy一个完整的函数M文件的结构为:functionf=fact(n)函数定义语句%Computeafactorialvalue.H1行%FACT(N)returnsthefactorialofN,帮助文本%usuallydenotedbyN!%Putsimply,FACT(N)isPROD(1:N).注释语句f=prod(1:n);函数体函数定义语句只在函数文件中存在,定义函数名称、输入输出参数的数量和顺序。函数定义语句的格式为:functiony=fact(x)。M文本文件介绍2023/7/226中国计量学院理学院lxyM文本文件介绍一个一般的脚本M文件%scriptm-:calculatethevolumeand

surfaceareaofacolumer=1;%theradiusofthecolumeh=1;%thehightofthecolumes=2*r*pi*h+2*pi*r^2;%calculatethesurfaceareav=pi*r^2*h;%calculatethevolumedisp('Thesurfaceareaofthecolumeis:'),disp(s);disp('Thevolumeofthecolumeis:'),disp(v);2023/7/227中国计量学院理学院lxy关系运算<小于<=小于等于>大于>=大于等于==等于~=不等于比较大小,如果结论是真则返回1,否则返回0注意==与=

的区别关系操作符能用来比较两个同样大小的数组,或用来比较一个数组和一个标量,在后一种情况,标量和数组中的每一个元素相比较,比较结果与数组大小一样。关系运算符2023/7/228中国计量学院理学院lxy例:关系运算举例>>

2+2==4>>

2>3>>

A=[135;206];>>

B=[310;246];>>

A>=B>>

x=[50;42];>>

x<42023/7/229中国计量学院理学院lxy&与(ElementwiseAND)|或(ElementwiseOR)~非xor(x,y)异或逻辑运算逻辑运算符A

&

B

等价于and(A,B)A

|

B

等价于or(A,B)

~

A

等价于not(A)2023/7/2210中国计量学院理学院lxy括号幂,点幂正号,符号,逻辑非乘,除,点乘,点除加,减冒号运算关系运算&|&&||运算优先级高低2023/7/2211中国计量学院理学院lxy程序控制结构有三种:顺序结构、选择结构和循环结构。任何复杂的程序都由这三种基本结构组成。顺序结构M文件控制流按排列顺序依次执行各条语句,直到程序的最后。这是最简单的一种程序结构,一般涉及数据的输入输出、数据的计算或处理等。2023/7/2212中国计量学院理学院lxy例:A=input('PleaseinputA:')数据的输入:inputA=input(提示信息)其中提示信息为字符串,该命令要求用户输入A

的值(可以是数或字符串)数据输入inputA=input(提示信息,'s')注:此时输入的字符串不要加单引号!如果是输入字符串,也可以使用下面的方法name=input('What''syourname?','s')例:2023/7/2213中国计量学院理学院lxydisp(X)输出变量X的值,可以是数值矩阵或字符串>>

B=[123;456;789];>>

disp(B)数据输出disp数据的输出:disp>>

A='Hello,Tom!';>>

disp(A)例:2023/7/2214中国计量学院理学院lxy数据输出fprintffprintf(fid,format,variables)按指定的格式将变量的值输出到指定的文件数据的输出:fprintf

fid

为文件句柄,若缺省,则将变量的值输出到屏幕上

format

用来指定数据输出时采用的格式,常见的有%e(采用科学计算形式)%f(采用浮点数形式)%g(由系统自动选取上述两种格式之一)

%s(输出字符串)

format

中还可以使用一些特殊格式,如:\n

(换行)\t

(制表符)\b

(退格)

\\

(反斜杆)

%%

(百分号)

2023/7/2215中国计量学院理学院lxy数据输出fprintf>>

a='Hello';b=2.4;c=100*pi;>>

fprintf('a=%s,b=%f,c=%e\n',a,b,c)例:

format

中的输出格式要与输出变量一一对应

可以没有输出变量>>

fprintf('

TodayisMonday\n')例:2023/7/2216中国计量学院理学院lxypause

程序的暂停:pausepause或

pause(n)若想强行终止程序的运行,可以使用Ctrl+c其中n

是延迟时间,以秒为单位;若缺省,则将暂停程序,直到用户按任意键后继续

pauseoff

屏蔽程序中所有

pause

的作用

pauseon

打开

pause

的作用2023/7/2217中国计量学院理学院lxy定义函数m文件MATLAB的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为MATLAB定义新函数,为此必须编写函数文件.定义函数的m文件有特殊的格式要求:第一行必须是一特殊字符function开始,格式为:

function因变量名=函数名(自变量名)(函数体)2023/7/2218中国计量学院理学院lxy例:定义函数z=100(y-x2)2+(1-x)2functionz=fun(x,y)1.建立M文件:fun.m2.可以直接使用函数fun.m例如:计算fun(1,2),只需在Matlab命令窗口键入命令:x=1,y=2fun(x)z=100*(y-x^2)^2+(1-x)^2;2023/7/2219中国计量学院理学院lxy选择结构是根据给定的条件成立或不成立,分别执行不同的语句。Matlab

用于实现选择结构的语句有if

语句和switch

语句。选择结构2023/7/2220中国计量学院理学院lxy单分支结构ifexpression

(条件)

statements(语句组)endif条件语句ifexpression(条件)

statements1(语句组1)else

statements2(语句组2)end双分支结构2023/7/2221中国计量学院理学院lxyifexpression1(条件1)

statements1(语句组1)elseifexpression2(条件2)

statements2(语句组2)......

elseifexpressionm(条件m)

statementsm(语句组m)else

statements(语句组)end多分支结构if条件语句P141Eg.07-062023/7/2222中国计量学院理学院lxy根据表达式的不同取值,分别执行不同的语句。switchexpression(表达式)casevalue1(表达式1)

statement1(语句组1)casevalue2(表达式2)

statement2(语句组2)......casevaluem

(表达式m)

statementm(语句组m)otherwise

statement(语句组)endswitch语句2023/7/2223中国计量学院理学院lxy

Matlab首先计算expression的值,然后将它依次与各个case指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出switch结构。

switch后面的表达式expression的值可以是一个标量或字符串。switch语句

otherwise指令可以不出现。如果所有的比较结果都为假,则执行otherwise后面的语句组,然后跳出switch结构。2023/7/2224中国计量学院理学院lxy例:利用分支语句编写条件判断程序,实现任意底对数的计算。switch举例分析:

Matlab中只提供了有限底的对数函数。P143Eg.07-072023/7/2225中国计量学院理学院lxy循环结构

for语句和while语句循环结构2023/7/2226中国计量学院理学院lxyforvariable=expression

statement(循环体)end循环变量

表达式expression

可以是行向量,也可以是矩阵for循环clear;y=0;n=100;fork=1:n

y=y+1/(2*k-1);end例:已知,当n=100时,求y的值!!不能在for循环体内改变循环变量的值!!2023/7/2227中国计量学院理学院lxy循环语句可以嵌套使用while循环whileexpression(条件)

statement(循环体)end如果预先就知道循环的次数,则可以采用for循环;否则,如果预先无法确定循环的次数,则可以使用while循环。2023/7/2228中国计量学院理学院lxy这个例子给出了计算eps

的一种方法。这里我们用大写EPS,因此系统中eps

的值不会被覆盖。当EPS=eps

时,条件仍成立;而当EPS=eps/2

时,条件为假,退出循环,所以最后应有EPS=eps/2。num

用来记录循环次数。计算Matlab

中eps

值while循环举例num=0;EPS=1;while(1+EPS)>1EPS=EPS/2;num=num+1;end2023/7/2229中国计量学院理学院lxy

break

continue

break

语句用于终止循环的执行,即跳出最内层循环

continue

语句用于结束本次循环,进行下一次循环

break

和continue

一般与if

语句配合使用其它流控制语句

return

return

语句用于退出正在运行的脚本或函数,通常用在函数文件中。2023/7/2230中国计量学院理学院lxy首先由计算机随机产生一个[1,100]之间的一个整数,然后由用户猜测所产生的这个数。根据用户猜测的情况给出不同的提示,如果猜测的数大于产生的数,则显示High,小于则显示

Low,等于则显示Youwon!,同时退出游戏。用户最多有7次机会。程序示例猜数游戏2023/7/2231中国计量学院理学院lxy程序示例数论中的一个有趣问题:任取一个正整数,如果是偶数,用2除,如果是奇数,用3乘再加1,反复这个过程,直到所得到的数为1。问:是否存在使该过程永不中止的整数?2023/7/2232中国计量学院理学院lxywhile

1

n=input('Pleaseentern(nonpositivequit):');

if

n<=0,

break;endnt=n;

while

n>1

if

rem(n,2)==0

n=n/2;

else

n=3*n+1;

end

fprintf('\nn=%d',n);

end

fprintf('\nn=%disnotweneed!continue...\n',nt);end程序示例2023/7/2233中国计量学院理学院lxy函数变量局部变量全局变量永久变量2023/7/2234中国计量学院理学院lxy局部变量每个函数都有自己的局部变量,这些变量存储在该函数独立的工作区中,与其他函数的变量及主工作区中的变量分开存储。当函数调用结束时,这些变量随之删除,不保存在内存中。在函数中,变量默认为局部变量。2023/7/2235中国计量学院理学院lxy全局变量与局部变量不同,全局变量可以在定义该变量的全部工作区中有效。当在一个工作区内改变该变量的值时,该变量在其他工作区中的变量同时改变。任何函数如果需要使用全局变量,则必须首先声明,声明格式为:global变量名1变量名22023/7/2236中国计量学院理学院lxy永久变量除局部变量和全局变量外,MATLAB中还有一种变量类型为永久变量。永久变量的特点为:只能在M文件内部定义;只有该变量从属的函数能够访问该变量;当函数运行结束时,该变量的值保留在内存中,因此当该函数再次被调用时,可以再次利用这些变量。永久变量的定义方法为:persistent变量名1变量名2。2023/7/2237中国计量学院理学院lxy程序示例%ex4global.mclear;globalaba=1;b=3;y=mysquaresum(a,b);fprintf('a=%g,b=%g\n',a,b);z=myproduct(a,b);fprintf('a=%g,b=%g\n',a,b);%mysquaresum.mfunctionsquare_sum=mysquaresum(x,y)square_sum=x^2+y^2;a=x+y;%myproduct.mfunctionproduct=myproduct(x,y)globalaproduct=x*y;a=x+y;2023/7/2238中国计量学院理学院lxy2023/7/2239中国计量学院理学院lxy补充1函数类型1匿名函数2主函数3子函数4嵌套函数5私有函数6重载函数2023/7/2240中国计量学院理学院lxy匿名函数匿名函数提供了一种创建简单程序的方法,使用它用户可以不必每次都编写M文件。用户可以在MATLAB的命令窗口或是其他任意M文件和脚本文件中使用匿名函数。

匿名函数的格式为:fhandle=@(arglist)expr

其中fhandle是为该函数创建的函数句柄;@符号用于创建函数句柄;arglist为用逗号分隔的参数列表;expr为函数主体,为MATLAB表达式。P149Eg.07-132023/7/2241中国计量学院理学院lxyfunction

printyh(n)%打印杨辉三角形,本函数没有输出参数yh=1;disp(yh);ifn==1,return;endyh=[1,1];disp(yh);fork=3:nyh_old=yh;k2=ceil(

温馨提示

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

评论

0/150

提交评论