第7章-matlab程序设计课件

上传人:痛*** 文档编号:241647131 上传时间:2024-07-12 格式:PPT 页数:51 大小:223KB
返回 下载 相关 举报
第7章-matlab程序设计课件_第1页
第1页 / 共51页
第7章-matlab程序设计课件_第2页
第2页 / 共51页
第7章-matlab程序设计课件_第3页
第3页 / 共51页
点击查看更多>>
资源描述
第第7章章 Matlab程序设计程序设计7.1 Matlab运行方式r命令行运行方式(命令窗口)命令行运行方式(命令窗口)逐条输入,逐条执行,操作简单、直观,但速度慢,执行逐条输入,逐条执行,操作简单、直观,但速度慢,执行过程不能保留。过程不能保留。rM文件运行方式文件运行方式 将命令编成程序存储在一个文件中(将命令编成程序存储在一个文件中(M文件),依次运行文件),依次运行文件中的命令,可以重复进行。文件中的命令,可以重复进行。rMatlab程序设计有传统高级语言的特征,又有自己独程序设计有传统高级语言的特征,又有自己独特的特点,可以特的特点,可以利用数据结构的特点利用数据结构的特点,使程序结构简,使程序结构简单,编程效率高单,编程效率高 7/12/20242命令行的输入规则:p一个一个命令行可以输入命令行可以输入一条一条命令或若干条命令,命令命令或若干条命令,命令行以回车键结束;行以回车键结束;p一个一个命令行中各命令行中各命令命令之间可以用逗号或分号分隔之间可以用逗号或分号分隔p如果一个命令行很长,要加续行符(三个小黑点如果一个命令行很长,要加续行符(三个小黑点)1 命令行 7/12/20243n用用Matlab语言编写的程序,称为语言编写的程序,称为M文件。文件。是由若干是由若干Matlab命令组合在一起构成的,它可以完命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。成某些操作,也可以实现某种算法。n M文件根据调用方式的不同分为两类:文件根据调用方式的不同分为两类:命令文件(命令文件(Script File)函数文件(函数文件(Function File)n 它们的扩展名都是它们的扩展名都是.m2 M文件 7/12/20244命令文件和函数文件的区别命令文件和函数文件的区别n命令文件没有输入参数,也不返回输出参数;命令文件没有输入参数,也不返回输出参数;函数函数文件可以带输入参数,也可以返回输出参数。文件可以带输入参数,也可以返回输出参数。n命令文件对工作空间中的变量进行操作,文件中所命令文件对工作空间中的变量进行操作,文件中所有命令的执行结果也返回工作空间中;有命令的执行结果也返回工作空间中;函数文件中函数文件中定义的变量为局部变量,当函数文件执行完毕时,定义的变量为局部变量,当函数文件执行完毕时,这些变量也被清除。这些变量也被清除。n命令文件可以直接运行;命令文件可以直接运行;函数文件不能直接运行,函数文件不能直接运行,要以函数调用的方式来调用它。要以函数调用的方式来调用它。7/12/20245例例7.1 建立文件将变量建立文件将变量a、b的值互换。的值互换。命令文件:命令文件:clear;a=1:10;b=11,12,13,14;15,16,17,18;c=a;a=b;b=c;ab将文件保存为将文件保存为exch,并在命令窗口执行。,并在命令窗口执行。执行结果:执行结果:a=11 12 13 14 15 16 17 18b=1 2 3 4 5 6 7 8 9 10 7/12/20246函数文件函数文件fexch.mfunction a,b=exch(a,b)c=a;a=b;b=c;然后在命令窗口调用该函数文件:然后在命令窗口调用该函数文件:clear all;clcx=1:10;y=11,12,13,14;15,16,17,18;x,y=fexch(x,y)输出结果为:输出结果为:a=11 12 13 14 15 16 17 18b=1 2 3 4 5 6 7 8 9 10函数参数函数参数a,b,c未保留在工作空间中,未保留在工作空间中,x,y保留在工作保留在工作空间中。空间中。7/12/20247M文件的建立与打开文件的建立与打开rM文件是一个文本文件,可以用任何编辑程序来建文件是一个文本文件,可以用任何编辑程序来建立和编辑,一般最常用的是使用立和编辑,一般最常用的是使用Matlab提供的文提供的文本编辑器。本编辑器。r该编辑器是一个集编辑和调试于一体的工作环境。该编辑器是一个集编辑和调试于一体的工作环境。7/12/202487.2 程序控制结构r顺序结构r选择结构r循环结构任何复杂的程序都可以由这3种基本结构构成 7/12/202497.2.1 顺序结构p顺序结构是指按照程序中语句的排列顺序依次执行,直到程序的最后一个语句。(最简单的一种程序)p数据的输入p数据的输出p程序的暂停 7/12/2024101 数据的输入 从键盘输入数据,可使用从键盘输入数据,可使用input函数函数来进行,调用来进行,调用格式为:格式为:A=input(提示信息,选项);(提示信息,选项);其中提示信息为一个字符串,用于提示用户输入其中提示信息为一个字符串,用于提示用户输入数据。数据。例如:从键盘输入例如:从键盘输入A矩阵,可以采用下面的命令矩阵,可以采用下面的命令来完成来完成 A=input(输入输入A矩阵矩阵););如果在如果在input函数调用时采用函数调用时采用s选项,则允许选项,则允许用户输入一个字符串。用户输入一个字符串。例:例:xm=input(Whats your name?,s);7/12/202411 命令窗口输出函数主要有命令窗口输出函数主要有disp函数,其调用格式为:函数,其调用格式为:disp(输出项)输出项)其中输出项既可以为字符串,也可以为矩阵。其中输出项既可以为字符串,也可以为矩阵。例如:例如:A=Hello,Tom;disp(A)输出为:输出为:Hello,Tom 又如:又如:A=1,2,3;4,5,6;7,8,9;disp(A)输出为:输出为:1 2 3 4 5 6 7 8 9%disp函数输出格式更紧凑函数输出格式更紧凑2 数据的输出 7/12/202412由于由于Matlab能进行复数运算,所以不需要判断方程的判别式,能进行复数运算,所以不需要判断方程的判别式,可直接根据求根公式求根。可直接根据求根公式求根。程序如下:程序如下: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);disp(x1=,num2str(x(1),x2=,num2str(x(2);程序输出为:程序输出为:a=?4b=?78c=?54x1=-0.7188,x2=-18.7812例例7.2 求一元二次方程求一元二次方程 的根。的根。7/12/2024133 程序的暂停 程序执行过程中暂停,可用pause函数,其调用格式为:pause(延迟描述)如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。若要强行中止程序的运行可按Ctrl+C键。7/12/2024147.2.2 选择结构r选择结构是根据给定的条件成立或不成立,分别执行不同的语句。rMatlab用于实现选择结构的语句if语句switch语句try语句 7/12/2024151 if语句(1)单分支单分支if语句语句语句格式:语句格式:if 条件条件 语句组语句组end例如:当例如:当x是整数矩阵时,输出是整数矩阵时,输出x的值的值if fix(x)=x disp(x);end 7/12/202416(2)双分支双分支if语句语句语句格式:语句格式:if 条件条件 语句组语句组 1else 语句组语句组 2end当条件成立时,执行语句组当条件成立时,执行语句组1,否则执行语,否则执行语句组句组2,然后再执行,然后再执行if语句的后续语句。语句的后续语句。1 if语句 7/12/202417例例7.3 计算分段函数:计算分段函数:程序如下:程序如下:x=input(请输入请输入x x的值的值:);if x=10 y=cos(x+1)+sqrt(x*x+1);else y=x*sqrt(x+sqrt(x);endy也可以用单分支也可以用单分支if语句来实现:语句来实现:x=input(请输入请输入x的值:的值:);y=cos(x+1)+sqrt(x*x+1);if x=10 y=x*sqrt(x+sqrt(x);endy 7/12/2024181 if语句(3)多分支多分支if语句语句语句格式:语句格式:if 条件条件1 语句组语句组 1elseif 条件条件2 语句组语句组 2elseif 条件条件m 语句组语句组 melse 语句组语句组nend 7/12/202419例例7.4 大小写字母的置换大小写字母的置换输输入入一一个个字字符符,若若为为大大写写字字母母,则则输输出出其其对对应应的的小小写写字字母母;若若为为小小写写字字母母,则则输输出出其其对对应应的的大大写写字字母母;若若为为数数字字字字符符则则输输出出其其对对应的数值,若为其他字符则原样输出。应的数值,若为其他字符则原样输出。程序如下:程序如下:c=input(请输入一个字符请输入一个字符,s);if c=A&c=a&c=0&c=9 disp(abs(c)-abs(0);else disp(c);endsetstr函数可以得到函数可以得到ASC码码 7/12/202420switch语句根据表达式的取值不同,分别执行不同的语句,语句根据表达式的取值不同,分别执行不同的语句,其语句格式:其语句格式:switch 表达式表达式case 表达式表达式1 语句组语句组1case 表达式表达式2 语句组语句组2case 表达式表达式m 语句组语句组motherwise 语句组语句组 nendswitch子句后面的表达式应为一个标量子句后面的表达式应为一个标量或一个字符串;或一个字符串;case子句后面的表达式子句后面的表达式不仅可以为一个标量或一个字符串,还不仅可以为一个标量或一个字符串,还可以为一个元胞矩阵。可以为一个元胞矩阵。2 switch语句 7/12/202421例例7.5 某商场对顾客所购买的商品实行打折销售,标准某商场对顾客所购买的商品实行打折销售,标准如下:如下:price200 没有折扣没有折扣200=price500 3%折扣折扣500=price1000 5%折扣折扣1000=price2500 8%折扣折扣2500=price5000 10%折扣折扣5000 mtimesInner matrix dimensions must agree.7/12/2024257.2.3 循环结构r循环是指按照给定的条件,重复执行指定的语句,rMatlab提供了两种实现循环结构的语句for语句while语句 7/12/2024261 for语句for语句的格式为:语句的格式为:for 循环变量循环变量=表达式表达式1:表达式:表达式2:表达式:表达式3 循环体语句循环体语句end其中表达式其中表达式1的值为循环变量的初值,表达式的值为循环变量的初值,表达式2的的值为步长,表达式值为步长,表达式3的值为循环变量的终值。步长的值为循环变量的终值。步长为为1时,表达式时,表达式2可以省略。可以省略。7/12/202427例例7.7 已知已知 ,当,当n=100时,求时,求y的值。的值。程序如下:程序如下:y=0;n=100;for i=1:n y=y+1/i/i;endy输出结果为:输出结果为:y=1.6350利用利用Matlab的特点,常用向量运算来的特点,常用向量运算来代替循环操作,程序可以如下代替循环操作,程序可以如下:n=100;i=1:n;f=1./i.2;y=sum(f)7/12/2024282 while语句while语句的一般格式为:语句的一般格式为:while条件条件 循环体语句循环体语句end其执行过程为:其执行过程为:若条件成立,则执行循环体语句,执行后再判断若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。条件是否成立,如果不成立则跳出循环。7/12/202429从键盘输入若干个数,当输入从键盘输入若干个数,当输入0时结束输入,求这些数的平均值时结束输入,求这些数的平均值和它们的和。和它们的和。sum=0;n=0;x=input(Enter a number(end in 0):);while(x=0)sum=sum+x;n=n+1;x=input(Enter a number(end in 0):);endif(n0)sum mean=sum/nend例例7.8 输出结果为:输出结果为:Enter a number(end in 0):67Enter a number(end in 0):89Enter a number(end in 0):93Enter a number(end in 0):70Enter a number(end in 0):0sum=319mean=79.7500 7/12/2024303 break语句和continue语句p它们一般与它们一般与if语句配合使用。语句配合使用。pbreak语句用于终止循环的执行。语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。继续执行循环语句的下一语句。pcontinue语句控制跳过循环体中的某些语句。语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。中所有剩下的语句,继续下一次循环。7/12/202431例例7.9 求求100,200之间第一个能被之间第一个能被21整除的整数。整除的整数。程序如下:程序如下:for n=100:200 if rem(n,21)=0;continue end breakendn程序输出结果为:程序输出结果为:n=105 7/12/2024327.3 函数文件r函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。Matlab提供的标准函数大部分是由函数文件定义的。r函数文件的基本结构r函数调用r函数参数的可调性r全局变量和局部变量 7/12/2024337.3.1 函数文件 函数文件由函数文件由function语句引导,其基本结构为:语句引导,其基本结构为:function 输出形参表输出形参表=函数名(输入形参表)函数名(输入形参表)注释说明部分注释说明部分 函数体语句函数体语句 其中,以其中,以function开头的一行为引导行,表示该开头的一行为引导行,表示该M文件是一个函数文件。文件是一个函数文件。当输出形参多于一个时,应该用方括号括起来。当输出形参多于一个时,应该用方括号括起来。7/12/202434说明:说明:1.关于函数文件名关于函数文件名 函数文件名通常由函数名再加上扩展名函数文件名通常由函数名再加上扩展名.m组成。组成。当函数文件名与函数名不同时,当函数文件名与函数名不同时,Matlab将忽略函数名而确认文将忽略函数名而确认文件名,因此件名,因此调用时使用函数文件名调用时使用函数文件名。2.关于注释说明部分关于注释说明部分 注释说明包括注释说明包括3部分:部分:紧随引导行之后以紧随引导行之后以%开头的第一注释行。开头的第一注释行。这一行一般包括大写的函数文件名和函数功能简要描述,供这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor关键词查询和关键词查询和help在线帮助时使用。在线帮助时使用。第一注释行及之后连续的注释行。第一注释行及之后连续的注释行。通常包括函数输入通常包括函数输入/输出参数的含义及调用格式说明等信息,输出参数的含义及调用格式说明等信息,构成全部在线帮助文本。构成全部在线帮助文本。7/12/202435说明:说明:与在线帮助文本相隔一空行的注释行。与在线帮助文本相隔一空行的注释行。包括函数文件编写和修改的信息,如作者和版本等。包括函数文件编写和修改的信息,如作者和版本等。3、关于、关于return语句语句 如果在函数文件中插入了如果在函数文件中插入了return语句,则执行到该语句就结束函数语句,则执行到该语句就结束函数 的执行,流程转至调用该函数的位置。通常也不使用的执行,流程转至调用该函数的位置。通常也不使用return语句。语句。例例7.10 编写函数文件,求半径为编写函数文件,求半径为r的圆的面积和周长。的圆的面积和周长。函数文件如下:函数文件如下:function s,p=fcircle(r)%FCIRCLE calculate the area and perimeter of a circle of radii r%r 圆半径圆半径%s 圆面积圆面积%p 圆周长圆周长%2006年年2月月30日编日编 s=pi*r*r;p=2*pi*r;7/12/202436说明:说明:将以上函数文件以文件名将以上函数文件以文件名fcircle.m保存,然后在命令窗口调用。保存,然后在命令窗口调用。s,p=fcircle(10)输出结果是:输出结果是:s=314.1593 p=62.8319采用采用help命令或命令或lookfor命令可以显示出注释说明部分的内容。命令可以显示出注释说明部分的内容。help fcircle屏幕显示屏幕显示 FCIRCLE calculate the area and perimeter of a circle of radii r r 圆半径圆半径 s 圆面积圆面积 p 圆周长圆周长 7/12/2024377.3.2 函数调用 函数调用的一般格式是:函数调用的一般格式是:输出实参表输出实参表=函数名函数名(输入实参表)输入实参表)注意:函数调用时,各实参出现的顺序、个数,应与函数定注意:函数调用时,各实参出现的顺序、个数,应与函数定义时相同。义时相同。例例7.11 利用函数文件,实现直角坐标利用函数文件,实现直角坐标(x,y)与极坐标与极坐标(,)之之间的的转换。函数文件:函数文件:tran.m:function rho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);调用调用tran.m的命令文件的命令文件main1.m:x=input(please input x=:);y=input(please input y=:);rho,the=tran(x,y);rho the 7/12/202438函数的嵌套调用函数的嵌套调用在在Matlab中,函数可以嵌套调用,即一个函数可以调用别中,函数可以嵌套调用,即一个函数可以调用别的函数。一个函数调用自身称为函数的递归调用。的函数。一个函数调用自身称为函数的递归调用。例例7.12 利用函数的递归调用,求利用函数的递归调用,求n!。!。显然,求显然,求n!需要求!需要求(n-1)!,这时可采用递归调用。函数如下:,这时可采用递归调用。函数如下:function f=factor(n)if n后后输输入入变变量量名名,检检查查变变量量的的值值。可可以以分分析析判断程序判断程序 的正确性。的正确性。选选择择Debug菜菜单单中中的的Continue命命令令,程程序序继继续续运运行行,在在断断点处又暂停,再检查变量的值,一直到发现问题为止。点处又暂停,再检查变量的值,一直到发现问题为止。切切换换工工作作空空间间,结结束束对对程程序序的的调调试试。打打开开编编辑辑窗窗口口中中的的Stack下下拉拉列列表表框框,从从中中选选择择Base,即即将将工工作作空空间间切切换换到到主主工工作作空空间间。然然后后选选择择Debug菜菜单单中中的的Set Clear Breakpoint 命命令令清清楚楚已已设设置置的的断断点点,在在选选择择Continue命命令令,去去除除白白色色箭箭头头,完成调试。完成调试。7/12/202451
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!