MATLAB与数学建模MATLAB程序设计课件.ppt

上传人(卖家):三亚风情 文档编号:2891327 上传时间:2022-06-08 格式:PPT 页数:71 大小:1.26MB
下载 相关 举报
MATLAB与数学建模MATLAB程序设计课件.ppt_第1页
第1页 / 共71页
MATLAB与数学建模MATLAB程序设计课件.ppt_第2页
第2页 / 共71页
MATLAB与数学建模MATLAB程序设计课件.ppt_第3页
第3页 / 共71页
MATLAB与数学建模MATLAB程序设计课件.ppt_第4页
第4页 / 共71页
MATLAB与数学建模MATLAB程序设计课件.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

1、2012级级 MATLAB与数学建模与数学建模第第5 5章章 MATLABMATLAB程序设计程序设计主要内容:主要内容: 5.1 M5.1 M文件文件 5.2 5.2 函数文件函数文件 5.3 5.3 流程控制流程控制 5.4 5.4 程序调试程序调试* * 5.5 5.5 文件操作文件操作* *2012级级 MATLAB与数学建模与数学建模5.1 M5.1 M文件文件命令行操作时,命令行操作时,Matlab窗口只允窗口只允许一次执行一行上的一个或几个许一次执行一行上的一个或几个语句。语句。在命令窗口输入数据和命令进行计在命令窗口输入数据和命令进行计算时,处理复杂问题和大量数据时算时,处理复

2、杂问题和大量数据时极不方便,极不方便,。因此应使用程序工作模式。因此应使用程序工作模式。即在即在Matlab 窗口下当用户输入单行指令时,窗口下当用户输入单行指令时,Matlab 立即处理这条指令,并显示结果,这就是立即处理这条指令,并显示结果,这就是Matlab命令命令行方式。行方式。2012级级 MATLAB与数学建模与数学建模5.1 M5.1 M文件文件 将将存储成存储成的的文件(称为文件(称为M文件),然后再执行该程序文件,这种文件),然后再执行该程序文件,这种工作模式称为程序文件模式。工作模式称为程序文件模式。2012级级 MATLAB与数学建模与数学建模5.1 M5.1 M文件文件

3、1. 包含包含的文件称为的文件称为M文件,其扩展名文件,其扩展名为为m;2. 如想灵活应用如想灵活应用Matlab去解决实际问题,充分调用去解决实际问题,充分调用Matlab的科学技算资源,就需要编辑的科学技算资源,就需要编辑m文件;文件;3. M文件是文件是,执行程序时逐行,执行程序时逐行运运行程序(行程序(Matlab是解释性的编程语言);是解释性的编程语言);4. M文件文件,但可,但可。2012级级 MATLAB与数学建模与数学建模5.1 M5.1 M文件文件 可用可用建立和编辑建立和编辑M文件!文件!M文件编辑文件编辑/调试器调试器2012级级 MATLAB与数学建模与数学建模5.1

4、 M5.1 M文件文件方法方法2:在:在Matlab命令窗口输入命令:命令窗口输入命令:edit editM文件编辑文件编辑/调试器调试器2012级级 MATLAB与数学建模与数学建模5.1 M5.1 M文件文件方法方法3:打开:打开Word,在,在Word中编辑中编辑M文件,并文件,并将其存成将其存成,以,以命名。命名。2012级级 MATLAB与数学建模与数学建模5.1 M5.1 M文件文件方法方法4:打开写字板,在其中编辑:打开写字板,在其中编辑M文件,并存成纯文本文件,并存成纯文本格式,以格式,以*.m命名。命名。问题:如何在问题:如何在Matlab中中设定默认的设定默认的M文件编辑器

5、?文件编辑器?。设。设定方法:在定方法:在Matlab主界面的菜单主界面的菜单栏点击:栏点击:.,打,打开开对话框。对话框。2012级级 MATLAB与数学建模与数学建模1)c:WinNTsystem32write.exe写字板;写字板;2)d:Program filesofficewinword.exeWord;2012级级 MATLAB与数学建模与数学建模1)一种是)一种是是是,与在命令窗口逐行执行文件中的所有指令,其结果是与在命令窗口逐行执行文件中的所有指令,其结果是一样的。一样的。 ;2)一种是)一种是,接受输入参数,并,接受输入参数,并产生输出结果,返回输出参数。产生输出结果,返回输

6、出参数。2012级级 MATLAB与数学建模与数学建模5.1 M5.1 M文件文件1. 标准的标准的ASCII文本文件文本文件;2. 包含一系列包含一系列Matlab函数和命令(如同在命令窗口输入函数和命令(如同在命令窗口输入的一样);的一样);3. 命令命令按顺序解释执行按顺序解释执行。2012级级 MATLAB与数学建模与数学建模脚本文件的特点:脚本文件的特点:1)脚本文件由两部分组成:)脚本文件由两部分组成:注释部分注释部分和和程序主体程序主体注释,绿色字注释,绿色字程序主体程序主体2012级级 MATLAB与数学建模与数学建模5.1 M5.1 M文件文件2)结构简单,)结构简单,没有输

7、入输出参数没有输入输出参数,只是一些函数,只是一些函数和命令的组合,类似于和命令的组合,类似于DOS下的批处理文件;下的批处理文件;3)可)可直接运行直接运行:在命令窗口输入脚本文件名,就会:在命令窗口输入脚本文件名,就会按顺序执行脚本主体部分的命令,本例最终的结果按顺序执行脚本主体部分的命令,本例最终的结果为绘图:为绘图:2012级级 MATLAB与数学建模与数学建模4)脚本文件对工作空间中的变量进行操作,文件中建立)脚本文件对工作空间中的变量进行操作,文件中建立的变量及执行结果也返回到工作空间中,且这些变量在的变量及执行结果也返回到工作空间中,且这些变量在脚本执行完后仍脚本执行完后仍保存在

8、工作空间中保存在工作空间中,可继续对其进行操,可继续对其进行操作,直到使用作,直到使用clear命令清除它们或命令清除它们或Matlab命令窗口关闭命令窗口关闭为止。为止。2012级级 MATLAB与数学建模与数学建模l input命令命令 提示用户从键盘输入数值、字符串、表达式。提示用户从键盘输入数值、字符串、表达式。input命令的调用格式:命令的调用格式: A=input(提示信息)(提示信息) A=input(提示信息,(提示信息,s)允许用户输允许用户输入字符串入字符串 a=input(a=?)a=?2a = 2 a=input(a=?)a=?in? Error using = in

9、putUndefined function or variable in. a=input(a=?,s)a=?ina = in2012级级 MATLAB与数学建模与数学建模5.1 M5.1 M文件文件例例 求一元二次方程求一元二次方程a2 +bx+c=0的根。的根。l a=input(a=?);l b=input(b=?);l c=input(c=?);l d=b*b-4*a*c;l x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);l disp(x1=,num2str(x(1),x2=,num2str(x(2);l将该程序以将该程序以aa.m文件存盘,然后运行文件存

10、盘,然后运行aa.m文件。文件。2012级级 MATLAB与数学建模与数学建模5.1 M5.1 M文件文件2 pause函数:暂停程序的执行。调用格式: pause(延迟秒数)注:如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。l 3 disp函数:函数:命令窗口输出函数。命令窗口输出函数。l调用格式:调用格式: disp(输出项输出项)l注:输出项为字符串或矩阵。注:输出项为字符串或矩阵。l例如例如l A=Hello,MATLAB;l disp(A)l输出为:输出为: Hello,MATLAB2012级级 MATLAB与数学建模与数学建模1. 与脚本不同,

11、函数犹如一个与脚本不同,函数犹如一个“”,把一些数据送进去,把一些数据送进去经过加工处理,再把结果送出来;经过加工处理,再把结果送出来;2. 从形式上看,与脚本文件不同。函数文件的第一行总是由从形式上看,与脚本文件不同。函数文件的第一行总是由关键字关键字引导的引导的,且函数,且函数。3. 从运行上看,与脚本文件不同。函数文件运行时,从运行上看,与脚本文件不同。函数文件运行时,Matlab为它开辟一个为它开辟一个,由函数执行的命令,由函数执行的命令,以及由这些命令所创建的中间变量,都隐含其中。当文件以及由这些命令所创建的中间变量,都隐含其中。当文件执行完毕,该临时工作空间及其中的变量立即被清除。

12、执行完毕,该临时工作空间及其中的变量立即被清除。2012级级 MATLAB与数学建模与数学建模函数申明行函数申明行H1行行帮助文本帮助文本函数主体(代码)函数主体(代码)5.2 5.2 函数文件函数文件2012级级 MATLAB与数学建模与数学建模5.2 5.2 函数文件函数文件 位于函数文件的首行,用关键字位于函数文件的首行,用关键字function开头,开头,函数名以及输入输出参数都在这一行被定义。函数名以及输入输出参数都在这一行被定义。function y1,y2, = funName ( x1,x2, )函数名函数名输入参数输入参数输出参数输出参数2012级级 MATLAB与数学建模与

13、数学建模即即,也叫第一注释行,它紧跟在申,也叫第一注释行,它紧跟在申明行之后,以明行之后,以,用于,用于,是是。 H1行及其以后的行及其以后的开头的所有注释行构成整开头的所有注释行构成整个在线帮助文本,可通过个在线帮助文本,可通过命令查询到。命令查询到。包括进行运算和赋值操作的所有包括进行运算和赋值操作的所有Matlab程序代码,其程序代码,其中可以有中可以有。5.2 5.2 函数文件函数文件2012级级 MATLAB与数学建模与数学建模 lookfor flipudFLIPUD Flip matrix in up/down direction. help flipudFLIPUD Flip

14、matrix in up/down direction.FLIPUD(X) returns X with columns preserved and rows flippedin the up/down direction. For example, X = 1 4 becomes 3 62 5 2 53 6 1 4 See also FLIPLR, ROT90, FLIPDIM.5.2 5.2 函数文件函数文件2012级级 MATLAB与数学建模与数学建模b. 在函数文件的组成部分中,在函数文件的组成部分中,申明行申明行是一个是一个Matlab函函数所数所必需必需的,其它各部分则不是必需的(

15、可以没的,其它各部分则不是必需的(可以没有);有);c. 编写代码时要养成良好的注释习惯,以方便自己和其编写代码时要养成良好的注释习惯,以方便自己和其它用户调用。它用户调用。a.函数文件名通常由函数文件名通常由函数名函数名再加上再加上扩展名扩展名.m组成。组成。 函数文件名与函数名也可以不相同,当两者不同时,函数文件名与函数名也可以不相同,当两者不同时,调用时使用函数文件名,最好使调用时使用函数文件名,最好使函数文件名和函数函数文件名和函数名相同名相同! 。5.2 5.2 函数文件函数文件2012级级 MATLAB与数学建模与数学建模输出参数输出参数1,输出参数输出参数2,= 函数名函数名(输

16、入参数输入参数1,输入参数输入参数2,)函数函数M文件的函数名和文件名不文件的函数名和文件名不相同时,调用时使用相同时,调用时使用,最好最好!函数调用过程中,输入输出参数函数调用过程中,输入输出参数的顺序和个数必须与函数定义中的顺序和个数必须与函数定义中的一致,即要注意的一致,即要注意。5.2 5.2 函数文件函数文件2012级级 MATLAB与数学建模与数学建模Example:利用函数文件,实现直角坐标(利用函数文件,实现直角坐标(x,y)到)到极坐标(极坐标(r,)的转换。)的转换。function r,theta=tran(x,y)r=sqrt(x2+y2);theta=atan(y/x

17、);函数文件函数文件tran.m x=3; y=4; r,theta=tran(x,y)r = 5theta = 0.9273函数调用函数调用5.2 5.2 函数文件函数文件2012级级 MATLAB与数学建模与数学建模function r,theta=tran(x,y)r=sqrt(x2+y2);theta=atan(y/x);函数文件函数文件translation.m x=3; y=4; r,theta=tran(x,y)? Undefined function or variable tran. x=3; y=4; r,theta=translation(x,y)r = 5theta =

18、 0.92732012级级 MATLAB与数学建模与数学建模函数函数可以按少于可以按少于函数函数M文件中所文件中所定定义的输入和输出变量进行调用义的输入和输出变量进行调用,但,但如果输入和输出变量数目多于函数如果输入和输出变量数目多于函数M文件中文件中function语句所定义的数语句所定义的数目,调用时自动返回一个错误。目,调用时自动返回一个错误。记录调用该函数时输入实参个数记录调用该函数时输入实参个数具有具有可调性可调性通过变量通过变量nargin和和nargout来实现来实现记录调用该函数时输出实参个数记录调用该函数时输出实参个数5.2 5.2 函数文件函数文件2012级级 MATLAB

19、与数学建模与数学建模function fout=charray(a,b,c)if nargin=1 fout=a;elseif nargin=2 fout=a+b;elseif nargin=3 fout=(a*b*c)/2;end三次调用函数文件charray.m,因为输入参数的个数分别是1个、2个、3个,从而执行不同的操作,返回不同的函数值 x=1:3;y=1;2;3;fout1=charray(x)fout2=charray(x,y)fout3=charray(x,y,3)函数文件charray.m5.2 5.2 函数文件函数文件2012级级 MATLAB与数学建模与数学建模fout1

20、= 1 2 3fout2 = 2 4 6fout3 = 21a. nargin、nargout本身本身都是函数都是函数,不是变量,所以它们,不是变量,所以它们不不能显示,也不能被赋值能显示,也不能被赋值。b. 函数可以按函数可以按少于函数少于函数M文件中所规定的输入和输出参数文件中所规定的输入和输出参数个数进行调用个数进行调用,但不能按多于函数,但不能按多于函数M文件中所规定的输文件中所规定的输入和输出参数个数进行调用。入和输出参数个数进行调用。5.2 5.2 函数文件函数文件2012级级 MATLAB与数学建模与数学建模1. 函数有函数有它们自己的它们自己的专用工作空间专用工作空间,它与,它

21、与Matlab的工的工作空间分开;作空间分开;2. 函数内所创建的变量函数内所创建的变量只驻留在函数的工作空间只驻留在函数的工作空间,而,而且只在函数执行期间临时存在,以后就消失,称为且只在函数执行期间临时存在,以后就消失,称为局部变量局部变量。不能从其它函数和。不能从其它函数和Matlab工作空间访问工作空间访问这些变量,因此,从一个调用到下一个调用,利用这些变量,因此,从一个调用到下一个调用,利用局部变量存储信息是不可能的。局部变量存储信息是不可能的。2012级级 MATLAB与数学建模与数学建模3. 函数内部与函数内部与Matlab工作空间之间唯一的联系是函数工作空间之间唯一的联系是函数

22、的的输入和输出变量输入和输出变量;4. 如果一个如果一个预定的变量预定的变量,例如,例如pi,在,在Matlab工作空间工作空间重新定义,它重新定义,它不会延伸到函数的工作空间不会延伸到函数的工作空间。同样,。同样,函数内的重新定义变量不会延伸到函数内的重新定义变量不会延伸到Matlab的工作空的工作空间中。间中。 pi=2pi = 2function mypi=mypimypi=pi; mypi=mypimypi = 3.14165.2 5.2 函数文件函数文件2012级级 MATLAB与数学建模与数学建模5. 函数被调用时,函数只是从输入变量中读入数值,函数被调用时,函数只是从输入变量中读

23、入数值,并不将其加入函数工作区;并不将其加入函数工作区;6. 如果在函数中修改了输入变量的值,该输入变量就如果在函数中修改了输入变量的值,该输入变量就会加入函数工作区;会加入函数工作区;7. 如果在函数定义时,输入参数和输出参数具有相同如果在函数定义时,输入参数和输出参数具有相同的变量名,函数执行时,该变量立即加入函数工作的变量名,函数执行时,该变量立即加入函数工作区;区;5.2 5.2 函数文件函数文件2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制Matlab的的程序结构程序结构顺序结构顺序结构循环结构循环结构分支分支(选择选择)结构结构for循环循环和和wh

24、ile循环循环ifelseendswitchcasetrycatch顺序结构:按照程序中语句的排列顺序依次执行程序分支结构:根据一定条件来执行的各条语句循环结构:被重复执行的一组语句,循环是计算机解决问题的主要手段顺序结构顺序结构2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制if 条件条件 执行语句执行语句end第一种(单分支if语句)若条件不成立,则若条件不成立,则直接执行直接执行ifif语句的语句的后继语句。后继语句。当条件成立时,则执行语句组,当条件成立时,则执行语句组,执行完之后继续执行执行完之后继续执行ifif语句的语句的后继语句后继语句2012级级

25、MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制if fix(x)=x disp(x)end条件当x是整数矩阵时,输出x的值2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制 当条件成立时,执行语句组当条件成立时,执行语句组1 1,否则执行语句,否则执行语句组组2 2,语句组,语句组1 1或语句组或语句组2 2执行后,再执行执行后,再执行ifif语句的语句的后继语句。后继语句。if 条件条件 执行语句执行语句1else 执行语句执行语句2end第二种(双分支if语句)是是否否2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控

26、制计算分段函数。计算分段函数。2cos(1)1,10,10 xxxyx xxx 用单分支用单分支ifif语句如语句如何实现,或有其他的实现何实现,或有其他的实现方法?方法?Example:x=input(x=input(请输入请输入x x的值的值:);:);ifif x=10 x=10 y=cos(x+1)+sqrt(xy=cos(x+1)+sqrt(x* *x+1);x+1);elseelse y=xy=x* *sqrt(x+sqrt(x);sqrt(x+sqrt(x);endendy y双分支if语句2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制计算分段函数

27、。计算分段函数。2cos(1)1,10,10 xxxyx xxxExample:单分支if语句x=input(x=input(请输入请输入x x的值的值:);:);ifif x=10 x=10 y=cos(x+1)+sqrt(xy=cos(x+1)+sqrt(x* *x+1);x+1);endendif if x=10 x=10 y=xy=x* *sqrt(x+sqrt(x);sqrt(x+sqrt(x);endendy y2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制if 条件条件1 执行语句执行语句1elseif 条件条件2 执行语句执行语句2 elseif

28、 条件条件m 执行语句执行语句mm else 执行语句执行语句nend第三种(多分支if语句)2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制编写编写M M函数,计算函数值。函数,计算函数值。 (1)21 (110)311 (10)xxyxxxxif x=1 & x=A & c=A & c=a& c=a& c=0& c=0& c s=10,liu,11,21;23,11;12, wang,12,4;3,54;14,gu,11,4;3,54 s=10,liu,11,21;23,11;12, wang,12,4;3,54;14,gu,11,4;3,54s = s =

29、10 liu 2x2 double 10 liu 2x2 double 12 wang 2x2 double 12 wang 2x2 double 14 gu 2x2 double 14 gu 2x2 double单元矩阵的建立与一般矩阵的建立相似,只是用大括号括起来2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制 用带有大括号下标的形式引用单元矩阵元素。 例如:s3,3 s3,3 s3,3ans =ans = 11 4 11 4 3 54 3 54s = s = 10 liu 2x2 double 10 liu 2x2 double 12 wang 2x2 do

30、uble 12 wang 2x2 double 14 gu 2x2 double 14 gu 2x2 double s2,2 s2,2ans =ans = wang wang2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制Example:读下面的程序,判断输出结果。读下面的程序,判断输出结果。num=1switch num case 0 disp(Im a teacher.); case 1 disp(You are a student.); otherwise disp(We are all students);endnum = 1You are a stude

31、nt.2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制 某商场对顾客所购买的商品实行打折销售,某商场对顾客所购买的商品实行打折销售,标准如下标准如下( (商品价格用商品价格用priceprice来表示来表示) ): price200 price200 没有折扣没有折扣 200price500 3%200price500 3%折扣折扣 500price1000 5%500price1000 5%折扣折扣 1000price2500 8%1000price2500 8%折扣折扣 2500price5000 10%2500price=200&price=500&pric

32、e=1000&price=2500&price=5000 %价格大于等于价格大于等于5000 price=price*(1-14/100);else %价格小于价格小于200 price=price; end price %输出商品实际销售价格输出商品实际销售价格2012级级 MATLAB与数学建模与数学建模price=input(price=input(请输入商品价格请输入商品价格););switchswitch fix(price/100) fix(price/100) casecase 0,1 0,1 % %价格小于价格小于200200 rate=0;rate=0; case case

33、2,3,4 2,3,4 % %价格大于等于价格大于等于200200但小于但小于500500 rate=3/100;rate=3/100; case case num2cell(5:9) num2cell(5:9) % %价格大于等于价格大于等于500500但小于但小于10001000 rate=5/100;rate=5/100; case case num2cell(10:24) num2cell(10:24) % %价格大于等于价格大于等于10001000但小于但小于25002500 rate=8/100;rate=8/100; casecase num2cell(25:49) num2ce

34、ll(25:49) % %价格大于等于价格大于等于25002500但小于但小于50005000 rate=10/100;rate=10/100; otherwiseotherwise % %价格大于等于价格大于等于50005000 rate=14/100;rate=14/100;endend price=price price=price* *(1-rate)(1-rate) % %输出商品实际销售价格输出商品实际销售价格向零方向取整将数字矩阵转换为单元矩阵2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制try 语句组语句组1catch 语句组语句组2end tr

35、y语句是一种语句是一种试探性执行语句试探性执行语句,基本格式为:,基本格式为:trytry语句先试探性执行语语句先试探性执行语句组句组1 1,如果语句组,如果语句组1 1在在执行过程中出现错误,执行过程中出现错误,则将错误信息赋给保留则将错误信息赋给保留的的lasterrlasterr变量,并转变量,并转去执行语句组去执行语句组2 2。2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制 矩阵乘法运算要求两矩阵的维数相容,否矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。自动转去求

36、两矩阵的点乘。Example:A=1,2,3;4,5,6; A=1,2,3;4,5,6; B=7,8,9;10,11,12;B=7,8,9;10,11,12;trytry C=A C=A* *B;B;catchcatch C=A.C=A.* *B;B;endendC Clasterrlasterr % %显示出错原因显示出错原因C =C = 7 16 27 7 16 27 40 55 72 40 55 72ans =ans =Error using = mtimesError using = mtimesInner matrix dimensions Inner matrix dimensio

37、ns must agree.must agree.2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制步长为步长为1时,表达式时,表达式2可以省略可以省略。for 循环变量循环变量 = 表达式表达式1 :表达式:表达式2 :表达式:表达式3 循环体循环体end起始值起始值步长步长终止值终止值1. for循环允许一组命令以循环允许一组命令以固定固定的和的和预定预定的次数重复。的次数重复。其基本格式:其基本格式:2012级级 MATLAB与数学建模与数学建模for循环的执行过程for 循环变量循环变量 = 表达式表达式1 :表达式:表达式2 :表达式:表达式3 循环体循环

38、体end2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制一一个三位整数各位数字的立方和等于该数个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出本身则称该数为水仙花数。输出100100999999的全部水仙花数。的全部水仙花数。forfor m=100:999m=100:999 m1=fix(m/100); m1=fix(m/100); % %求求m m的百位数字的百位数字 m2=rem(fix(m/10),10); m2=rem(fix(m/10),10); % %求求m

39、m的十位数字的十位数字 m3=rem(m,10); m3=rem(m,10); % %求求m m的个位数字的个位数字 ifif m=m1m=m1* *m1m1* *m1+m2m1+m2* *m2m2* *m2+m3m2+m3* *m3m3* *m3m3 disp(m) disp(m) endendendendExample2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制forfor语句更一般的格式为:语句更一般的格式为:forfor 循环变量循环变量= =矩阵表达式矩阵表达式 循环体语句循环体语句endend 执行过程:依次将矩阵的执行过程:依次将矩阵的各列元素各

40、列元素赋给循环变量,赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。然后执行循环体语句,直至各列元素处理完毕。 在在MATLABMATLAB中,中,forfor语句的语句的循环变量可以是一循环变量可以是一个列向量个列向量2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制 i=0;for n=(1:10) i = i+1; x(n)=sin(n*pi/10);end2012级级 MATLAB与数学建模与数学建模执行过程:执行过程:1)for和和end语句之语句之间的间的循环体语句按循环体语句按数组中的每一列执数组中的每一列执行一次行一次。2)在每一次迭代中,)

41、在每一次迭代中,循环变量循环变量i被指定为被指定为数组的下一列,数组的下一列,即即在第在第n次循环中,次循环中,i=Array(:, n)。for 循环变量循环变量 = Array 循环体循环体end2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制1)for循环的终止循环的终止 for i=1:10 x(i)=sin(i*pi/10);i=10; end x myMfile1x = 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0.0000for循环循环不能不能用用for循循环内环内重

42、新赋值循环重新赋值循环变量变量i来终止来终止!2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制break语句用于终止循环语句用于终止循环的执行!的执行!forfor i=1:10 i=1:10 x(i)=sin(i x(i)=sin(i* *pi/10);pi/10); breakbreak; ;endendx x myfile1 myfile1x =x = 0.3090 0.30902012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制2)for循环中的循环中的Array可以是可以是任何有效的任何有效的Matlab数组数组,在,在每一次迭

43、代中,循环变量每一次迭代中,循环变量i被指定为被指定为Array的下一列,的下一列,即在第即在第n次循环中,次循环中,i=Array(:, n)。s=0;data=12 13 14;15 16 17;18 19 20;21 22 23;for k=datas=s+k;enddisp(s);data = 12 13 14 15 16 17 18 19 20 21 22 23211815120ks2219161321181512kss232017142219161321181512kss394857662012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制3)for循环可以

44、循环可以嵌套嵌套例:求例:求1!+2!+3!+ +5!sum=0;for i=1:1:5 pdr=1; for j=1:1:i pdr=pdr*j; end sum=sum+pdr;end内循环,计算内循环,计算i的阶乘的阶乘sum = 1532012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制4) 当有一个等效的当有一个等效的数组方法数组方法来解给定的问题时,来解给定的问题时,应避免用应避免用for循环。循环。 tic;n=1:20000;x=sin(n*pi/10);toc;elapsed_time = 0.0200tic;for i=1:20000 x(i)=s

45、in(i*pi/10);endtoc;elapsed_time = 11.5570 在在for循环内每执行一次命令,变量循环内每执行一次命令,变量x的大小增加的大小增加1,迫使,迫使Matlab每一次循环要每一次循环要花费时间对花费时间对x分配更多的内存。分配更多的内存。 2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制已知已知 当当n=100n=100时,求时,求y y的值。的值。22221111.123yny=0;n=100;y=0;n=100;for i=1:nfor i=1:n y=y+1/i/i;y=y+1/i/i;endendy y n=100;n=1

46、00;i=1:n;i=1:n;f=1./i.2;f=1./i.2;Y=sum(f)Y=sum(f) 用向量来代替循环操作如果n=1000000,后者的速度比前者的快的多。Example2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制5)为了得到最大的速度,在)为了得到最大的速度,在for循环被执行循环被执行之前,应之前,应预先分配数组预先分配数组。 tic;x=zeros(1,20000);for i=1:20000 x(i)=sin(i*pi/10);endtoc;elapsed_time = 8.28202012级级 MATLAB与数学建模与数学建模5.3 5

47、.3 流程控制流程控制while 表达式表达式 循环体循环体enda. 表达式表达式一般由一般由逻辑运算逻辑运算、关系运算关系运算以及以及一般运算一般运算组成,组成,以判断循环的进行和停止;以判断循环的进行和停止;b. 表达式表达式的值可以是的值可以是标量标量或或数组数组。表达式。表达式的值的所有的值的所有元素为真(非元素为真(非0),继续循环;),继续循环;直到直到表达式值的某元表达式值的某元素为素为0,循环停止,循环停止。2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制A = 1 0 2 3B = 1 1 3 42012级级 MATLAB与数学建模与数学建模5

48、.3 5.3 流程控制流程控制表达式的值非零表达式的值非零执行循环体中语句执行循环体中语句YesNowhile循环的循环判断条件是逻辑判循环的循环判断条件是逻辑判断语句,断语句,循环次数不定循环次数不定,故其适用,故其适用范围更广。范围更广。for语句可以用语句可以用while语句语句来完成,反过来则不行。来完成,反过来则不行。while 表达式表达式 循环体循环体end2012级级 MATLAB与数学建模与数学建模5.3 5.3 流程控制流程控制for i=1:n . . .endwhile in+1 . . . i=i+1endExample:求出从求出从1到多少的自然数的和大于或等于到多少的自然数的和大于或等于100。 sum=0;i=0;while sum 0)(n 0) sum sum mean=sum/n mean=sum/nendend2012级级 MATLAB与数学建模与数学建模谢谢认真听讲谢谢认真听讲下次课再见下次课再见下课时间下课时间

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(MATLAB与数学建模MATLAB程序设计课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|