第4讲 程序设计.ppt_第1页
第4讲 程序设计.ppt_第2页
第4讲 程序设计.ppt_第3页
第4讲 程序设计.ppt_第4页
第4讲 程序设计.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、第四讲是关于Matlab编程,即m文件。Matlab有两种工作模式:交互式命令行工作模式、m文件工作模式和m文件。用MATLAB语言编写的程序称为m文件。m”作为扩展名。根据不同的调用方式,m文件可以分为两类:m文件由多个MATLAB命令组成。它可以完成一些操作和实现一些算法,如脚本文件:命令文件/脚本文件,函数文件:函数文件。事实上,Matlab提供的内部函数和各种工具箱都是用Matlab语言编写的M文件。用户也可以根据自己的工作需要开发自己的程序或工具箱。命令文件没有输入参数,也不返回输出参数;函数文件可以接受输入参数或返回输出参数。命令文件操作Matlab当前工作空间中的变量,文件中所有

2、命令的执行结果也返回到当前工作空间。函数文件中定义的变量是局部变量。函数执行后,这些变量被清除,命令文件可以直接运行。在Matlab命令窗口中输入文件名将依次执行文件中的命令。函数文件不能直接运行,应该以函数调用的方式调用。两种类型的M文件的区别是:(1)命令文件:输入以下内容并保存在文件名f2cs.m中,清除;%清除当前工作空间中的变量f=输入(请输入华氏温度:);c=5 *(f-32)/9;打印(摄氏温度为%gn,c);在Matlab命令窗口中输入f2cs以执行命令文件。没有输入参数,也没有输出参数。执行之后,变量c和f保留在工作空间中。例如:使用命令文件和函数文件分别将华氏温度转换为摄氏

3、温度。函数文件:建立函数文件f2cf.m,其内容如下:函数c=f2cf(f)c=5 *(f-32)/9;在Matlab命令窗口中输入f2cf(200)。调用该函数时,既有输入参数,也有输出参数;在函数调用之后,变量c和f不保存在工作空间中。m文件是一个文本文件,可以由任何文本编辑器创建和编辑,但通常使用Matlab的文本编辑器。启动Matlab文本编辑器有三种方法:打开现有的m文件;1)打开菜单;2)编辑文件名;3)命令按钮;4)双击m文件;1)新建2)菜单;2)编辑命令;3)将要运行的命令编辑成一个命令,eem文件:a=1:9b=11,12,13;14,15,16;17,18,19;c=a;

4、a=b;b=c;a=11 12 13 14 15 16 17 18 19b b=1 2 3 4 5 6 7 8 9在MATLAB的命令窗口中输入ee,命令文件将被执行。命令文件,函数文件,函数输出参数表=函数名(输入行参数表)注释描述部分(可选)函数体语句(必需),其中以函数开始的一行引导该行,表示m文件是一个函数文件。特别注意:添加注释是一个好的编程习惯。文件名和函数名必须统一,函数名的命名规则与变量名相同(必须以字母开头)。函数文件由函数语句指导,其基本结构是:函数文件的基本结构,编写函数文件来计算半径为r的圆的面积和周长。函数s,p=半径为r %r的圆的面积和周长圆半径%s圆面积%p圆周

5、长%编译时间:2010年8月30日s=* r * r;p=2 * pi * r;几种解释,输入和输出参数,当函数有多个输出变量时,它被括在方括号中;当一个函数有多个输入变量时,它直接用括号括起来。函数文件中定义的变量只在函数文件中工作。当函数文件被执行时,这些内部变量将被清除。当函数不包含输出变量时,输出部分将被直接省略或用空方括号表示。,函数调用,函数调用的通用格式,函数文件编译后,可以被其他M文件调用。输出参数表=函数名(输入参数表)。调用函数时,参数的顺序和数量必须与定义函数时形式参数的顺序和数量一致。函数可以被嵌套调用,也就是说,一个函数可以被其他函数调用,甚至可以被它自己调用,这在此

6、时被称为递归调用。示例(1),%函数文件tran.m函数gama,theta=tran (x,y)gama=sqrt(x * x y * y);=atan(y/x);%调用tran.m的命令文件main.m x=输入(请输入x=:);y=输入(请输入y=:);gam,the=tran(x,y);示例:使用函数文件实现直角坐标(x,y)和极坐标(,)之间的转换。例如(2),%函数文件因子。如果(n=1) f=1,m函数f=因子(n );否则f=n *因子(n-1);结束,%命令文件主模式为I=1:5fac (I)=因子(I);结束,示例:计算n!程序运行结果为:fac=1 2 6 24 120,

7、程序调试,1。MATLAB主程序调试:MATLAB具有很强的检错能力,在工作空间中保存和显示变量的功能不需要特殊的调试命令,所以主程序调试非常方便。2.函数程序的调试:当机器因为函数程序中的错误而停止时,它的变量不会被保存。虽然也会指出错误的语句,但子程序中的变量(局部变量)在程序执行后会自动消失,其他字段数据也不会被记录,这给调试带来很大的困难。可以采取以下措施:(1)将一些分号改为逗号,以便将中间结果显示在屏幕上,作为错误检查的基础。(2)在子程序的适当位置添加键盘命令。当您到达这里时,系统将暂停并等待用户键入命令。此时,子程序中的变量仍然存在于工作空间中,所以您可以检查它。(3)将“%”

8、放在函数文件的第一行之前,使其成为一个用于初步调试的程序文件。第一行中的输入参数可以通过使用input或赋值语句来输入,然后在调试后更改回函数文件。两个数据输入和输出,两个数据输入和输出,数据输入:输入,A=输入(提示信息);提示信息为字符串,A=输入(提示信息);允许用户输入字符串,名称=输入(你叫什么名字?s),a=输入(a=?);b=输入(b=?);c=输入(c=?);d=b * b-4 * a * c;X=(-b sqrt (d)/(2 * a),(-b sqrt (d)/(2 * a)将程序保存为aa.m文件,然后运行aa.m文件。求二次方程a2 bx c=0的根。数据输出:显示,显

9、示(X);其中x是字符串或矩阵,程序暂停:暂停,暂停(n);如果你想强制暂停程序的运行,你可以使用Ctrl c,其中n是以秒为单位的延迟时间;您也可以直接使用暂停,然后程序将暂停,直到用户按下任何键,然后继续。pause off:屏蔽程序中所有暂停的作用;暂停:打开暂停功能。两个数据的输入和输出,如A=你好,MATLAB显示输出是:你好,MATLAB,三个程序控制结构,三个程序控制结构,三种序列结构选择结构,循环结构和程序控制结构,任何复杂的程序都可以由这三种基本结构组成。(a)序列结构,按照执行的顺序,直到程序的最后一条语句。这是最简单的程序结构,一般涉及数据输入、数据计算或处理、数据输出等

10、。序列结构,根据给定条件是否成立,分别执行不同的语句,单分支,if expr语句结束,if语句(2)选择结构,以及Matlab用来实现选择结构的语句包括if和switch语句,双分支,If expr(条件)语句1(语句组1) else语句2(语句组2)结束,多分支:If expr1(条件1)语句1(语句组1) elseif expr2(条件2)语句2(语句组2).elseif exprm(条件m) statementm(语句组m) else语句end,if语句,可以有多个elseif,但只能有一个elseif!switch语句,根据表达式的不同值,分别执行不同的语句。,switch expr(

11、expression)case expr 1(expression 1)statement 1(statement group 1)case expr 2(expression group 2)statement 2(expression group 2).否则语句(语句组)结束,当执行任何分支语句时,直接执行下面的switch语句switch子句后的表达式可以是标量或字符串;case子句后的表达式可以是标量、字符串或单元格。当表达式的值等于单元格中的元素时,将执行相应的语句组。Switch语句(续),示例输入三角形的三条边并计算面积。A=输入(请输入三角形的三条边):如果一个(1)一个(2)

12、一个(3)不能形成一个三角形。)结束运行:请输入三角形的三条边:4 5 6 9.9216。示例输入一个字符。如果是大写字母,输出其后的字符;如果是小写字母,输出其前导字符;如果是其他字符,按原样输出。clc c=输入(请输入字符:s);如果c=A结束,示例根据变量num的值,确定显示的内容。clc num=输入(请输入一个数字:我是一名教师。);我是一名学生。);案例1显示(你是一名教师。);否则,你是学生。);结束,选择结构,try语句格式:try语句组1捕获语句组2结束try语句首先暂时执行语句组1,如果语句组1在执行过程中有错误,将错误信息分配给保留的lasterr变量,然后转到执行语句

13、组2。选择结构。矩阵乘法要求两个矩阵的维数一致,否则会出现错误。首先,求两个矩阵的乘积。如果有错误,它会自动转向寻找两个矩阵的点乘。程序如下:=1,2,3;4,5,6;B=7,8,9;10,11,12;试一试。C=a * B;显示错误原因。第三,循环结构是重复执行指定的语句,for语句,for变量=expr (expression)语句结束,并根据给定的条件循环变量。表达式可以是行向量或矩阵。循环变量=表达式1:表达式2:表达式3,在Matlab中用来实现循环结构的语句包括for语句和while语句。在MATLAB编程中,使用循环会降低程序的执行速度,因此应该避免使用或用其他方法代替,如矢量运

14、算。第三,循环语句,注意:1)不能通过在for循环中重新分配循环变量n来终止for循环。对于n=1:10 x(n)=sin(n * pi/10);n=10End 2)语句1:10是一个标准的MATLAB数组创建语句,它接受for循环中任何有效的MATLAB数组。数据=3 9 45 6;7 16 1 5;对于n=数据x=n(1)-n(2)结束,对于循环语句,3)对于循环可以根据需要嵌套,对于n=1:5对于m=5:-1:1s (n,m)=N2 m2;end disp end,s=2 5 10 17 26 5 8 13 29 10 13 18 25 34 17 20 32 41 26 29 34 4

15、1 50,4)当有一个等价数组来解决给定的问题时,我们应该避免使用FOR循环,例如,上面注释1中的示例可以重写为n=1:10x=sin(n * pi/10);5)为了获得最大速度,应该在执行for循环(while loop)之前预先分配阵列。如注释3所示,S=)应在循环前执行;而expr语句、end、break和continue语句以及break语句用于终止循环的执行。continue语句控制跳过循环体中的一些语句并继续下一个循环。中断和继续通常与if语句一起使用。循环语句可以嵌套,while循环:while循环。如果循环结构的循环体包含循环结构,则称为循环嵌套或多重循环结构。多个循环的嵌套级别可以是任意的。根据嵌套层数,它可以被称为双环、三环等。内环叫做内环,外环叫做外环。圆形嵌套;找出100,1000以内的所有素数。,clc清零n=0;对于

温馨提示

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

评论

0/150

提交评论