五Matlab编程入门

上传人:gp****x 文档编号:243386790 上传时间:2024-09-22 格式:PPT 页数:40 大小:266.50KB
返回 下载 相关 举报
五Matlab编程入门_第1页
第1页 / 共40页
五Matlab编程入门_第2页
第2页 / 共40页
五Matlab编程入门_第3页
第3页 / 共40页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,*,Matlab,编程入门,1,Matlab 编程入门,Matlab,编程简介,Matlab,作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算、符号计算、矩阵运算能力和丰富的绘图功能,同时也具有和,C,、,FORTRAN,等高级语言一样进行程序设计。,在,Matlab,程序设计中,要充分利用,Matlab,数据结构的特点,提高编程效率。,利用,Matlab,的程序控制功能,可以将有关,Matlab,命令编成程序存储在一个文件中,(,M,文件,),,然后在命令窗口中运行该文件,,Matlab,就会自动依次执行文件中的命令,直到全部命令执行完毕。,2,用,Matlab,语言编写的程序称为,M,文件,。,M,文件是由若干,Matlab,命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。事实上,,Matlab,提供的内部函数以及各种工具箱,都是利用,Matlab,语言开发的,M,文件。用户也可以结合自己的工作需要,开发自己的程序或工具箱。,M,文件根据调用方式的不同可以分为两类:,Script,:,脚本文件,/,命令文件,Function,:,函数文件,M 文件,M,文件以,.,m,为扩展名。,3,M,文件是一个文本文件,可以用任何文本编辑器来建立和编辑,通常使用,Matlab,自带的,M,文件编辑器。,M 文件的建立与打开,新建一个,M,文件,菜单操作,(,File, New M-File,),命令操作,(,edit,M,文件名,),命令按钮,(,快捷键,),打开已有的,M,文件,菜单操作,(,File, Open,),命令操作,(,edit,M,文件名,),命令按钮,(,快捷键,),双击,M,文件,4,选中,M,文件编辑器下拉菜单项,【Debug,:,Run】,,即可执行该文件。如果文件有错误,则会停在出错的指令行上,并在指令窗中指出错误的类型,和出错的位置,。,M,文件编程基础,5,存盘要取文件名,通常保存到,matlab,work,目录中,.,文件名要以,字母开头中间不含空格和标点符号,.,通常用拼音加数字,如:,zhuxu1,、,zx2,、,jixian-1,等,;,不能用数字和专用变量名,如,123,,,pi,,,ans,,,eps,,,matlab,等,.,文件名不能与程序中变量名一样,.(,能保存,运行出错,),运行程序:点击工具条,Tools,中的,run,命令或在指令窗口输入程序名。其,运行结果或出错信息显示在指令窗口,,此时,用户应切换到指令窗口进行查看,.,M,文件编写和运行,6,在命令窗口中输入,f2cs,,,即可执行该,M,文件。,例:,编写一个脚本文件将华氏温度转化为摄氏温度,脚本文件举例,clear;,%,清除当前工作空间中的变量,f=input(,Please input Fahrenheit temperature:,);,c=5*(f-32)/9;,fprintf(The centigrade temperature is %gn,c);,新建一个,M,文件,f2cs.m,,,内容如下:,脚本文件运行后,文件中所产生的,所有变量都驻留在,Matlab,当前工作空间,,可以用,whos,查看。,7,关系运算,小于,大于,=,大于等于,=,等于,=,不等于,比较大小,如果结论是,真,则返回,1,,否则返回,0,注意,=,与,=,的区别,关系操作符能用来比较两个,同样大小,的数组,或用来比较,一个数组和一个标量,,在后一种情况,标量和数组中的每一个元素相比较,比较结果与数组大小一样。,关系,运算符,8,例:,关系运算举例,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),例:,format,中的输出格式要与输出变量一一对应,可以没有输出变量,fprintf,(,Today is Mondayn,),例:,18,选择结构,是根据给定的条件成立或不成立,分别执行不同的语句。,Matlab,用于实现选择结构的语句有,if,语句,和,switch,语句,。,选择结构,条件,程序模块1,成立,不成立,程序模块2,19,单分支结构,if,expression,(,条件),statements (,语句组),end,if 条件语句,if,expression (,条件),statements1(,语句组1),else,statements2(,语句组2),end,双分支结构,20,if,expression1,(,条件,1,),statements1(,语句组,1),elseif,expression2 (,条件,2,),statements2(,语句组,2),. .,elseif,expressionm (,条件,m,),statementsm(,语句组,m,),else,statements(,语句组,),end,多分支结构,if 条件语句,21,将百分制的学生成绩转换为五级制的成绩输出,-if,实现,clear,n=input(,输入,n= );,if n=90,r=A,elseif n=80,r=B,elseif n=70,r=C,elseif n=60,r=D,else,r=E,end,运行结果:,输入,n= 87,r =,B,条件,1,语句组,1,条件,2,是,语句组,2,是,否,条件,n,语句组,n,语句组,n+1,否,否,是,if 语句举例,22,根据表达式的不同取值,分别执行不同的语句。,switch,expression (,表达式),case,value1 (,表达式1),statement1(,语句组1),case,value2 (,表达式2),statement2(,语句组2),. .,case,valuem,(,表达式,m),statementm(,语句组,m),otherwise,statement (,语句组),end,switch 语句,23,Matlab,首先计算,expression,的值,然后将它依次与各个,case,指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出,switch,结构。,switch,后面的表达式,expression,的值可以是一个标量或字符串。,switch 语句,otherwise,指令可以不出现。,如果所有的比较结果都为假,则执行,otherwise,后面的语句组,然后跳出,switch,结构。,24,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=E,end,25,循环结构,是按照给定的条件,重复执行指定的语句。,Matlab,用于实现循环结构的语句有,for,语句,和,while,语句,循环结构,程序模块,不成立,成立,条件,26,for,variable=expression,statement(,循环体,),end,循环变量,表达式,expression,可以是行向量,也可以是矩阵,for 循环,clear;,y=0; n=100;,for,k=1:n,y=y+1/(2*k-1);,end,例:,已知,,当,n,=100,时,求,y,的值,27,循环语句可以嵌套使用,while 循环,while,expression,(,条件,),statement(,循环体,),end,不能在,for,循环体,内改变循环变量的值,为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免,for,循环,的使用,如果预先就知道循环的次数,则可以采用,for,循环,;否则,如果预先无法确定循环的次数,则可以使用,while,循环,。,28,【,例,】,使用,while,结构计算,1+2+3+100,。,clear,sum=0; i=0;,while i100,i=i+1;,sum=sum+i;,end,i,sum,i =,100,ans =,5050,执行结果为,clear,sum=0;,for i=1:100,sum=sum+i;,end,i,sum,29,break,和,continue,break,语句用于,终止循环,的执行,即跳出最内层循环,continue,语句用于结束,本次循环,,进行下一次循环,break,和,continue,一般与,if,语句配合使用,其它流控制语句,return,return,语句用于,退出,正在运行的脚本或函数,通常用在函数文件中。,30,function,输出形参列表,=函数名,(,输入形参列表,),%,注释说明部分,(,可选,),函数体语句,(必须),第一行为,引导行,,表示该,M,文件是函数文件,函数名的命名规则与变量名相同,(,必须以字母开头,),当输出行参多于一个时,用,方括号,括起来,函数必须是一个,单独的,M,文件,函数,文件名必须与函数名一致,以,百分号,开始的语句为,注释语句,函数文件,函数文件由,function,语句引导,31,例 编写函数文件求半径为,r,的圆的面积和周长,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,下,然后在,MATLAB,命令窗口调用该函数:,s,p=fcircle(10),函数文件举例,32,函数调用的一般格式,输出实参列表,=函数名,(,输入实参列表,),函数调用时,,实参的顺序,应与函数定义时的,形参的顺序,一致。,函数可以,嵌套调用,,即一个函数可以被其它函数调用,甚至可以被它自身调用,此时称为,递归调用,。,函数所传递的参数具有可调性,,Matlab,用两个永久变量,nargin,和,nargout,分别记录调用该函数时的输入实参和输出实参的个数。,函数调用,33,%,函数文件,factor.m,function,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);,end,fprintf,( s=%g n,s),例:利用函数的递归调用计算,n,!,递归函数举例,34,子函数,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;,end,35,函数通过,输入和输出参数,与其它,M,文件进行数据传递。,当函数调用完毕后,该函数文件中定义的所有局部变量都将被释放,即,全部被清除,。,如果在若干个,M,文件中,,都把某个变量定义为全局变量,,则这些函数将公共使用这一变量,。,所有函数都可以对它进行存取和修改操作。,函数文件中的变量都是,局部,的,即一个函数文件中定义的变量不能被另一个函数文件或其它,M,文件使用。,全局变量与局部变量,定义全局变量是,M,文件间传递信息的一种手段。,36,变量名列表中的各个变量,用空格隔开,,不能用逗号!,全局变量给函数间的数据传递带来了方便,但却破坏了函数对变量的封装,降低了程序的可读性,因而,在结构化程序设计中,全局变量是不受欢迎的,。特别是当程序较大,子程序较多时,全局变量将个程序调试和维护带来不便,故不提倡使用全局变量。,global,变量名列表,全局变量的定义,37,程序示例,clear;,global a b,a=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,a,product=x*y;,a=x+y;,38,子函数,函数文件中可以含有一个或多个子函数,子函数由,function,语句引导,主函数必须位于最前面,子函数出现的次序任意,子函数只能被主函数和位于同一个函数文件中的其它子函数调用,除了用,global,定义的全局变量外,子函数中的变量都是局部变量,子函数与主函数及其它子函数之间通过输入、输出参数进行数据传递,调用一个函数时,,Matlab,会首先检查该函数是否为一个子函数。,39,Matlab,命令执行过程,输入,china,输出变量,china,的值,变量?,执行该,内部函数,当前目录中有,china.m,?,内联函数?,搜索路径中有,china.m,?,否,执行该,M,文件,执行该,M,文件,报错!,子函数?,私有函数?,执行该,M,文件,是,是,是,是,是,否,否,40,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


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

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


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