收藏 分享(赏)

第三章 Matlab程序设计.ppt

上传人:kpmy5893 文档编号:7183918 上传时间:2019-05-09 格式:PPT 页数:43 大小:456.50KB
下载 相关 举报
第三章 Matlab程序设计.ppt_第1页
第1页 / 共43页
第三章 Matlab程序设计.ppt_第2页
第2页 / 共43页
第三章 Matlab程序设计.ppt_第3页
第3页 / 共43页
第三章 Matlab程序设计.ppt_第4页
第4页 / 共43页
第三章 Matlab程序设计.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、第三章 MATLAB程序设计,3.1 M文件,3.2 程序控制结构(本章重点),3.3 函数文件(本章重点),3.4 程序举例(参见教材),3.5 程序调试,3.1 M文件,3.1.1 M文件概述,包含Matlab程序代码的文件称为M文件,其扩展名为m。,如想灵活应用Matlab去解决实际问题,充分调用Matlab的科学技术资源,就需要编辑m文件。,M文件不能在命令窗口建立,但可使用任何文本编辑器编辑。,M文件是ASCII码文本文件,执行程序时逐行解释运行程序,Matlab是解释性的编程语言。,M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function

2、 File)。,1、命令文件,标准的ASCII文本文件;,包含一系列Matlab函数和命令(如同在命令窗口输入的一样);,命令按顺序解释执行。,命令文件的特点:,1)命令文件由两部分组成:注释部分和程序主体,注释,绿色字,执行的主体,2)结构简单,没有输入输出参数,只是一些函数和命令的组合,类似于DOS下的批处理文件;,3)可直接运行:在命令窗口输入命令文件名,就会按顺序执行命令主体部分的命令,本例最终的结果为绘图:,4)命令文件对工作空间中的变量进行操作,文件中建立的变量及执行结果也返回到工作空间中,且这些变量在脚本执行完后仍保存在工作空间中,可继续对其进行操作,直到使用clear命令清除它

3、们或Matlab命令窗口关闭为止。,2、函数文件,函数申明行,帮助文本,函数主体(代码),从形式上看,与命令文件不同。函数文件的第一行总是由关键字function引导的函数申明行,且函数接受输入参数,返回输出参数。,从运行上看,与命令文件不同。函数文件运行时,Matlab为它开辟一个临时的函数工作空间,由函数执行的命令,以及由这些命令所创建的中间变量,都隐含其中。当文件执行完毕,该临时工作空间及其中的变量立即被清除。所有可见的东西是输入和输出。,3.1.2 M文件的建立与打开,M文件是文本文件,可以用任何文本编辑器建立和编辑。但常用且最为方便的是使用Matlab提供的M文件编辑/调试器。,具体

4、创建方法:,1)在Matlab主界面的菜单栏点击:FileNewM-File,2)在Matlab命令窗口输入命令:edit, edit,M文件编辑/调试器,3)命令按钮操作。单击MATLAB主窗口工具栏上的New M-File命令按钮,3.2 程序控制结构,3.2.1 顺序结构,数据的输入,input命令提示用户从键盘输入数值、字符串、表达式。,input命令的调用格式:A=input(提示信息)A=input(提示信息,s)允许用户输入字符串, a=input(a=?)a=?2a =2, a=input(a=?)a=?in? Error using = inputUndefined func

5、tion or variable in., a=input(a=?,s)a=?ina =in,2、数据的输出,MATLAB提供的命令窗口输出函数主要有disp函数,disp命令的调用格式:disp(输出项) 其中输出项既可以为字符串,也可以为矩阵。,3、程序的暂停,pause命令可以在程序运行时暂停程序的执行。若要强行中止程序的运行可使用Ctrl+C命令。,pause命令的调用格式:pause(延迟秒数) 如果省略延迟时间,直接使用pause,程序将暂停,直至用户按任意键后程序才继续运行。,3.2.2 选择结构,1、ifelseend语句,基本格式:(三种),if 表达式执行语句 end,第一

6、种:,if 表达式执行语句1 else执行语句2 end,第二种:,是,否,if 表达式1执行语句1 elseif 表达式2执行语句2. else执行语句n end,第三种:,多分支,if语句执行过程,1)判断表达式紧跟在关键字if后面,使得它可以首先被计算;,2)根据判断表达式的计算结果进行判断,结果为0判断为假,结果为1判断为真;,3)若判断为真,则执行其后的执行语句;否则跳过,不予执行。,例:编写M函数,计算函数值。,if x1y=x,elseif x=1 & x10 y=2*x-1,else y=3*x-11 end,2、switch-case-end语句,基本格式:,switch 表

7、达式(标量或字符串) case 值1语句组1 case 值2语句组2.case 值m语句组m otherwise语句组m+1 end,switch语句执行过程,例:读下面的程序,判断输出结果。,num=1switch numcase 0disp(Im a teacher.);case 1disp(You are a student.);otherwisedisp(We are all students);end,num =1You are a student.,3.2.3 循环结构,for循环,for循环允许一组命令以固定的和预定的次数重复。其基本格式:,for 循环变量 = Array循环体

8、 end,for循环的执行过程:,for和end语句之间的循环体语句按数组中的每一列执行一次。,在每一次迭代中,循环变量i被指定为数组的下一列,即在第n次循环中,i=Array(:, n)。,说明:, for i=1:10x(i)=sin(i*pi/10);end x x = Columns 1 through 8 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 Columns 9 through 10 0.3090 0.0000,例3-10 写出下列程序的执行结果。 s=0; data=12 13 14;15 16 17;18

9、19 20;21 22 23; for k=datas=s+k; end disp(s);,执行结果: 39 48 57 66,在实际MATLAB编程中,采用循环语句会降低其执行速度,当有一个等效的数组方法来解给定的问题时,应避免用For循环。,说明:,例3-9 已知 ,当n=100时,求y的值。程序如下: y=0; n=100; for i=1:ny=y+1/(2*i-1); end y,上程序通常由下面的程序来代替: n=100; i=1:2:2*n-1; y=sum(1./i); y,while循环,while循环的基本格式:,while 表达式循环体 end,表达式一般由逻辑运算、关系

10、运算以及一般运算组成,以判断循环的进行和停止;,表达式的值可以是标量或数组。表达式的值的所有元素为真(非0),继续循环;直到表达式值的所有元素为0,循环停止。,while循环的执行过程:,例:求出从1到多少的自然数的和大于或等于100。,sum=0;i=0;while sum100i=i+1;sum=sum+i; end,i =14sum =105,3、break语句和continue语句,break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。, for i=1:10x(i)=sin(i*pi/10);if i=5,break,endend

11、x x = 0.3090 0.5878 0.8090 0.9511 1.0000,continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。,例3-12 求100,200之间第一个能被21整除的整数。 for n=100:200 if rem(n,21)=0continue end break end n,n=105,4、循环的嵌套,例:求1!+2!+3!+ +5!,sum=0; for i=1:1:5pdr=1;for j=1:1:ipdr=pdr*j;endsum=sum+pdr;end,内循环,计算i的阶乘,外循环,su

12、m =153,3.3 函数文件,3.3.1 函数文件的基本结构,函数申明行:,位于函数文件的首行,用关键字function开头,函数名以及输 入输出参数都在这一行被定义。,function y = flipud ( x ),函数名,输入参数,输出参数,其中以function开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于一个时,则应该用方括号括起来。,注释说明部分:,可通过help命令查询到。,函数主体(代码):,包括进行运算和赋值操作的所有Matlab程序代码,其中可以有流程控制、交互输入输出、计

13、算、赋值、注释,还可包括函数调用和对脚本文件的调用。,在函数文件的组成部分中,申明行是一个Matlab函数所必需的,其它各部分则不是必需的(可以没有);,编写代码时要养成良好的注释习惯,以方便自己和其它用户调用;,说明:,3.3.2 函数调用,1、Matlab中调用函数的常用形式:,输出参数1,输出参数2,=函数名(输入参数1,输入参数2,),说明:函数调用过程中,输入输出参数的顺序和个数必须与函数定义中的一致,即要注意实际参数和形式参数的对应。,例:利用函数文件,实现直角坐标(x,y)到极坐标(r,)的转换。,function r,theta=tran(x,y) r=sqrt(x2+y2);

14、 theta=atan(y/x);,函数文件tran.m, x=3; y=4; r,theta=tran(x,y)r =5theta =0.9273,函数调用,2、函数调用可以嵌套,即一个函数可以调用别的函数,还可以调用它自身(递归调用)。,function iforgot(n) if nargin=0n=20; end if n1disp(I will remember to do my homework.)iforgot(n-1) elsedisp(Maybe NOT!) end,一个函数递归调用的例子:iforgot。, iforgot(10) I will remember to do

15、 my homework. I will remember to do my homework. I will remember to do my homework. I will remember to do my homework. I will remember to do my homework. I will remember to do my homework. I will remember to do my homework. I will remember to do my homework. I will remember to do my homework. Maybe

16、NOT!,函数调用,3.3.3 函数参数的可调性,调用一个函数时,所用输入输出参数的数目,在函数内是规定好的。函数工作空间变量nargin包含输入参数个数;函数工作空间变量nargout包含输出参数个数。常用这两个变量来设置缺省输入变量,并决定用户所希望的输出变量。,function y=linspace(d1,d2,n) if nargin=2 n=100; end y=d1+(0:n-2)*(d2-d1)/(n-1)d2;,函数参数的传递具有可调性,通过变量nargin和nargout来实现,3.3.4 全局变量与局部变量,函数内所创建的变量只驻留在函数的工作空间,而且只在函数执行期间临时

17、存在,以后就消失,称为局部变量。不能从其它函数和Matlab工作空间访问这些变量,因此,从一个调用到下一个调用,利用局部变量存储信息是不可能的。,如果变量说明是全局的,函数可以与其它函数、Matlab工作空间和递归调用本身共享变量;,为了在函数内或Matlab工作空间中访问全局变量,在每一个所希望的工作空间,变量必须申明是全局的:,global 变量名1 变量名2 ,声明格式:,例3-18 全局变量应用示例。先建立函数文件wadd.m,该函数将输入的参数加权相加。 function f=wadd(x,y) global ALPHA BETA f=ALPHA*x+BETA*y;在命令窗口中输入:

18、 global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2),s=5,实际编程中,应尽量避免使用全局变量。要是用了全局变量,建议全局变量名要长,能反映它本身的含义,并有选择地以首次出现的M文件的名字开头。,因为全局变量的值一旦在一个地方被改变,在其它使用该变量的函数中都将改变,这样有可能会出现不可预见的情况。,3.4 程序举例(参见教材),3.5 程序调试,编写M文件时的错误(bug)类型:,语法错误(Syntax),语法错误是指变量名、函数名的误写,标点符号的缺、漏以及函数调用格式、数据类型不符合定义等。这类错误通常能在运行时发现,这时Matlab会中止M文

19、件的执行并给出相应的错误原因及所在行、列号。,运行错误(Run-time),运行错误是由算法本身引起的,发生在程序运行过程中。相对于语法错误而言,运行错误较难处理,尤其是M函数文件,它一旦停止运行,其中间变量会被删除一空,错误很难查找。,M文件调试方法:,直接调试法:,思路:直接在M文件中利用人机交互函数控制M文件的执行过程,利用辅助函数或其它手段显示、观察一些中间变量在运行中的值,以发现一些运行中的错误。,具体方法有以下几种:,1)在M文件中,将某些语句后面的分号去掉,迫使M文件输出一些中间计算结果,以便发现可能的错误;,2)在M文件的适当位置,添加显示某些关键变量值的语句(如使用disp函数);,3)利用echo命令,使运行时在屏幕上逐行显示文件内容;,工具调试法:,利用Matlab的M文件编辑/调试器提供的debug工具进行调试。,具体调试方法参见教材并在上机中实践。,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报