文档详情

五Matlab编程入门ppt课件

仙***
实名认证
店铺
PPT
287.53KB
约40页
文档ID:157803012
五Matlab编程入门ppt课件_第1页
1/40

西南交通大学数学建模西南交通大学数学建模Matlab 编程入门Matlab 编程入门编程入门q Matlab 编程简介u Matlab 作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算、符号计算、矩阵运算能力和丰富的绘图功能,同时也具有和 C、FORTRAN 等高级语言一样进行程序设计u 在 Matlab 程序设计中,要充分利用 Matlab 数据结构的特点,提高编程效率u 利用 Matlab 的程序控制功能,可以将有关 Matlab 命令编成程序存储在一个文件中(M 文件),然后在命令窗口中运行该文件,Matlab 就会自动依次执行文件中的命令,直到全部命令执行完毕q 用 Matlab 语言编写的程序称为 M 文件q M 文件是由若干 Matlab 命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法事实上,Matlab 提供的内部函数以及各种工具箱,都是利用 Matlab 语言开发的 M 文件用户也可以结合自己的工作需要,开发自己的程序或工具箱q M 文件根据调用方式的不同可以分为两类:u Script:脚本文件/命令文件 u Function:函数文件 M 文件文件q M 文件以.m 为扩展名。

q M 文件是一个文本文件,可以用任何文本编辑器来建立和编辑,通常使用 Matlab 自带的 M 文件编辑器M 文件的建立与打开文件的建立与打开q 新建一个 M 文件u 菜单操作(File New M-File)u 命令操作(edit M 文件名)u 命令按钮(快捷键)q 打开已有的 M 文件u 菜单操作 (File Open)u 命令操作(edit M 文件名)u 命令按钮 (快捷键)u 双击 M 文件 n 选中M文件编辑器下拉菜单项【Debug:Run】,即可执行该文件如果文件有错误,则会停在出错的指令行上,并在指令窗中指出错误的类型,和出错的位置M文件编程基础文件编程基础n 存盘要取文件名,通常保存到matlabwork目录中.n 文件名要以字母开头中间不含空格和标点符号.通常用拼音加数字,如:zhuxu1、zx2、jixian-1等;不能用数字和专用变量名,如123,pi,ans,eps,matlab等.文件名不能与程序中变量名一样.(能保存,运行出错)n 运行程序:点击工具条Tools中的run命令或在指令窗口输入程序名其运行结果或出错信息显示在指令窗口,此时,用户应切换到指令窗口进行查看.M文件编写和运行文件编写和运行u 在命令窗口中输入 f2cs,即可执行该 M 文件。

5(32)9cf例:编写一个脚本文件将华氏温度转化为摄氏温度脚本文件举例脚本文件举例clear;%清除当前工作空间中的变量f=input(Please input Fahrenheit temperature:);c=5*(f-32)/9;fprintf(The centigrade temperature is%gn,c);u 新建一个 M 文件 f2cs.m,内容如下:脚本文件运行后,文件中所产生的所有变量都驻留所有变量都驻留在在 Matlab 当前工作空间当前工作空间,可以用 whos 查看关系运算关系运算小于小于大于大于=大于等于大于等于=等于等于=不等于不等于l 比较大小,如果结论是 真真 则返回 1,否则返回 0l 注意=与=的区别l 关系操作符能用来比较两个同样大小的数组,或用来比较一个数组和一个标量,在后一种情况,标量和数组中的每一个元素相比较,比较结果与数组大小一样q 关系关系运算符运算符例:例:关系运算关系运算举例举例 2+2=4 23 A=1 3 5;2 0 6;B=3 1 0;2 4 6;A=B x=5 0;4 2;x a=Hello;b=2.4;c=100*pi;fprintf(a=%s,b=%f,c=%en,a,b,c)例:例:l format 中的输出格式要与输出变量一一对应l 可以没有输出变量 fprintf(Today is Mondayn)例:例:选择结构选择结构 是根据给定的条件成立或不成立,分别执行不同的语句。

Matlab 用于实现选择结构的语句有 if 语句和 switch 语句选择结构选择结构条件条件程序模块程序模块1成立成立不成立不成立程序模块程序模块2l 单分支结构if expression(条件)条件)statements(语句组)语句组)endif 条件语句条件语句if expression(条件)条件)statements1(语句组语句组1)else statements2(语句组语句组2)endl 双分支结构if expression1(条件1)statements1(语句组1)elseif expression2(条件2)statements2(语句组2).elseif expressionm(条件m)statementsm(语句组m)else statements(语句组)endl 多分支结构if 条件语句条件语句将百分制的学生成绩转换为五级制的成绩输出将百分制的学生成绩转换为五级制的成绩输出-if-if实现实现clearn=input(输入输入n=);if n=90 r=Aelseif n=80 r=Belseif n=70 r=Celseif n=60 r=Delse r=Eend运行结果:运行结果:输入n=87r=B条件条件1语句组语句组1条件条件2是是语句组语句组2是是否否条件条件n语句组语句组n语句组语句组n+1否否否否是是if 语句举例语句举例l 根据表达式的不同取值,分别执行不同的语句。

switch expression(表达式)表达式)case value1(表达式表达式1)statement1(语句组语句组1)case value2(表达式表达式2)statement2(语句组语句组2).case valuem(表达式表达式m)statementm(语句组语句组m)otherwise statement(语句组)语句组)endswitch 语句语句l Matlab 首先计算 expression 的值,然后将它依次与各个 case 指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出 switch 结构l switch 后面的表达式 expression 的值可以是一个标量或字符串switch 语句语句l otherwise 指令可以不出现l 如果所有的比较结果都为假,则执行 otherwise 后面的语句组,然后跳出 switch 结构clear,n=input(输入输入n=);switch fix(n/10)case 10,9 r=A case 8 r=B case 7 r=C case 6 r=D otherwise r=Eend循环结构循环结构 是按照给定的条件,重复执行指定的语句。

Matlab 用于实现循环结构的语句有 for 语句语句和 while 语句语句循环结构循环结构程序模块程序模块不成立不成立成立成立条件条件for variable=expression statement(循环体)end循环变量循环变量l 表达式 expression 可以是行向量,也可以是矩阵for 循环循环clear;y=0;n=100;for k=1:n y=y+1/(2*k-1);end例:例:已知 ,当,当 n=100 时,求时,求 y 的值的值12151311nyl 循环语句可以嵌套使用while 循环循环while expression(条件)statement(循环体)endl 不能在 for 循环体内改变循环变量的值l 为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免 for 循环的使用l 如果预先就知道循环的次数,则可以采用 for 循环;否则,如果预先无法确定循环的次数,则可以使用 while 循环例】使用while结构计算1+2+3+100clearsum=0;i=0;while i100i=i+1;sum=sum+i;endisumi=100ans=5050执行结果为clearsum=0;for i=1:100 sum=sum+i;endisumu break 和 continuel break 语句用于终止循环的执行,即跳出最内层循环 l continue 语句用于结束本次循环,进行下一次循环 l break 和 continue 一般与 if 语句配合使用其它流控制语句其它流控制语句u returnl return 语句用于退出正在运行的脚本或函数,通常用在函数文件中。

function 输出形参列表输出形参列表=函数名函数名(输入形参列表输入形参列表)%注释说明部分注释说明部分(可选可选)函数体语句函数体语句(必须必须)u 第一行为第一行为引导行引导行,表示该,表示该 M文件是函数文件文件是函数文件u 函数名的命名规则与变量名相同函数名的命名规则与变量名相同(必须以字母开头必须以字母开头)u 当输出行参多于一个时,用当输出行参多于一个时,用方括号方括号括起来括起来u 函数必须是一个函数必须是一个单独的单独的 M文件文件u 函数函数文件名必须与函数名一致文件名必须与函数名一致u 以以百分号百分号开始的语句为开始的语句为注释语句注释语句函数文件函数文件q 函数文件由函数文件由 function 语句引导语句引导 function s,p=fcircle(r)%FCIRCLE calculate the area and perimeter of a circle of radii r%r 圆半径圆半径%s 圆面积圆面积%p 圆周长圆周长 s=pi*r*r;p=2*pi*r;以上函数文件以文件名以上函数文件以文件名fcircle.m存入存入 c:matlab7work下,然后在下,然后在MATLABMATLAB命令窗口调用命令窗口调用该函数:该函数:s,p=fcircle(10)函数文件举例函数文件举例q 函数调用的一般格式函数调用的一般格式输出实参列表输出实参列表=函数名函数名(输入实参列表输入实参列表)u 函数调用时,函数调用时,实参的顺序实参的顺序应与函数定义时的应与函数定义时的形参的顺形参的顺序序一致。

一致u 函数可以函数可以嵌套调用嵌套调用,即一个函数可以被其它函数调用,即一个函数可以被其它函数调用,甚至可以被它自身调用,此时称为甚至可以被它自身调用,此时称为递归调用递归调用u 函数所传递的参数具有可调性,函数所传递的参数具有可调性,Matlab 用两个永久变用两个永久变量量 nargin 和和 nargout 分别记录调用该函数时的输入实分别记录调用该函数时的输入实参和输出实参的个数参和输出实参的个数函数调用函数调用1,1!(1)!,1nnnnn%函数文件函数文件 factor.mfunction f=factor(n)if(n=1)f=1;else f=n*factor(n-1);end%main.m%计算计算 s=1!+2!+3!+4!+5!%s=0;for i=1:5 s=s+factor(i);endfprintf(s=%g n,s)例:利用函数的递归调用计算例:利用函数的递归调用计算 n!递归函数举例递归函数举例子函数子函数function avg,med=ex4subfun(x)%主函数主函数 n=length(x);avg=mean(x,n);med=median(x,n);function a=mean(x,n)%子函数子函数a=sum(x)/n;function m=median(x,n)%子函数子函数x=sort(x);if rem(n,2)=1 m=x(n+1)/2);else m=(x(n/2)+x(n/2+1)/2;endq 函数通过函数通过输入和输出参数输入和输出参数与其它与其它 M 文件进行数据传递。

文件进行数据传递q 当函数调用完毕后,该函数文件中定义的所有局部变量当函数调用完毕后,该函数文件中定义的所有局部变量都将被释放,即都将被释放,即全部被清除全部被清除q 如果在若干个如果在若干个 M文件中,文件中,都把某个变量定义为全局变都把某个变量定义为全局变量量,则这些函数将公共使用这一变量,则这些函数将公共使用这一变量所有函数都可以对所有函数都可以对它进行存取和修改操作它进行存取和修改操作q 函数文件中的变量都是函数文件中的变量都是局部局部的,即一个函数文件中定义的,即一个函数文件中定义的变量不能被另一个函数文件或其它的变量不能被另一个函数文件或其它 M 文件使用文件使用全局变量与局部变量全局变量与局部变量q 定义全局变量是定义全局变量是 M文件间传递信息的一种手段文件间传递信息的一种手段l 变量名列表中的各个变量变量名列表中的各个变量用空格隔开用空格隔开,不能用逗号!,不能用逗号!全局变量给函数间的数据传递带来了方便,但却破坏全局变量给函数间的数据传递带来了方便,但却破坏了函数对变量的封装,降低了程序的可读性,因而了函数对变量的封装,降低了程序的可读性,因而在在结构化程序设计中,全局变量是不受欢迎的结构化程序设计中,全局变量是不受欢迎的。

特别是特别是当程序较大,子程序较多时,全局变量将个程序调试当程序较大,子程序较多时,全局变量将个程序调试和维护带来不便,故不提倡使用全局变量和维护带来不便,故不提倡使用全局变量global 变量名列表变量名列表全局变量的定义全局变量的定义程序示例程序示例clear;global a ba=1;b=3;y=mysquaresum(a,b);fprintf(a=%g,b=%g n,a,b);z=myproduct(a,b);fprintf(a=%g,b=%gn,a,b);function square_sum=mysquaresum(x,y)square_sum=x2+y2;function product=myproduct(x,y)global aproduct=x*y;a=x+y;子函数子函数u 函数文件中可以含有一个或多个子函数函数文件中可以含有一个或多个子函数u 子函数由子函数由 function 语句引导语句引导u 主函数必须位于最前面,子函数出现的次序任意主函数必须位于最前面,子函数出现的次序任意u 子函数只能被主函数和位于同一个函数文件中的其它子子函数只能被主函数和位于同一个函数文件中的其它子函数调用函数调用u 除了用除了用 global 定义的全局变量外,子函数中的变量都定义的全局变量外,子函数中的变量都是局部变量,子函数与主函数及其它子函数之间通过输入、是局部变量,子函数与主函数及其它子函数之间通过输入、输出参数进行数据传递输出参数进行数据传递q 调用一个函数时,调用一个函数时,Matlab 会首先检查该函数是否为一个会首先检查该函数是否为一个子函数。

子函数Matlab命令执行过程命令执行过程输入输入 china输出变量输出变量china的值的值变量?变量?执行该执行该内部函数内部函数当前目录中有当前目录中有china.m?内联函数?内联函数?搜索路径中有搜索路径中有china.m?否否执行该执行该M文件文件执行该执行该M文件文件报错!报错!子函数?子函数?私有函数?私有函数?执行该执行该M文件文件是是是是是是是是是是否否否否。

下载提示
相关文档
正为您匹配相似的精品文档