资源描述:
《投资项目评估.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章MATLAB程序设计3.1M文件3.2数据的输入输出3.3选择结构3.4循环结构3.5函数文件3.6全局变量和局部变量目录3.1M文件编程M文件的功能和特点MATLAB是解释性语言语法简单调试容易人机交互性强开放性、可扩展性强3.1.1M文件的建立与编辑1.建立新的M文件(1)菜单操作:MATLAB命令窗口的File菜单→New菜单项→M-file命令。(2)命令操作:在MATLAB命令窗口输入命令edit。(3)命令按钮操作:单击MATLAB命令窗口工具栏上的“新建”命令按钮。2.编辑已有的M文件3.1.
2、2M文件的分类分类:命令文件(ScriptFile/脚本文件)和函数文件(FunctionFile)。命令文件有效指令的集合以文件名直接调用运行函数文件格式,第一行以function语句开始命令文件对于一些比较简单的问题,在指令窗中直接输入指令计算.对于复杂计算,采用命令文件最为合适.MATLAB只是按文件所写的指令执行.M命令文件的特点是:命令文件的构成比较简单,只是一串按用户意图排列而成的(包括控制流向指令在内的)MATLAB指令集合M文件中定义的变量为全局变量.命令文件运行后,所产生的所有变量都驻留在MAT
3、LAB基本工作空间(Baseworkspace)中。只要用户不使用清除指令(clear),MATLAB指令窗不关闭,这些变量将一直保存在基本工作空间中例3.1建立一个命令文件将变量a,b的值互换,然后运行该命令文件。首先建立命令文件并以文件名exch.m存盘:clear;a=1:10;b=[11,12,13,14;15,16,17,18];c=a;a=b;b=c;ab然后在MATLAB的命令窗口中输入exch,将会执行该命令文件。目录函数文件与命令文件不同,函数文件犹如一个“黑箱”,把一些数据送进并经加工处理,再
4、把结果送出来.MATLAB提供的函数指令大部分都是由函数文件定义的.用M文件自定义函数,开头为:functionyname=fname(xname)yname:因变量名,fname:函数名,xname:自变量名.文件名必须为fname,即与函数名相同.例3.2建立一个函数文件将变量a,b的值互换,然后在命令窗口调用该函数文件。首先建立函数文件fexch.m:function[a,b]=fexch(a,b)c=a;a=b;b=c;然后在MATLAB的命令窗口调用该函数文件:clear;x=1:10;y=[11,12
5、,13,14;15,16,17,18];[x,y]=fexch(x,y)目录由上例可以看出函数文件的一般格式为:function[输出表]=函数名(输入表)函数体函数文件的第一行必须是以关键字function开始,表明该文件是函数文件.输入表是以逗号相分隔的形参.输出表是函数的返回值.如果返回值只有一个方括号可以省略;如果返回值不止一个,输出表中的各个变量要以逗号隔开.标准的函数文件基本结构。(1)函数定义行(关键字function)function[out1,out2,..]=filename(in1,in2,
6、..)输入和输出(返回)的参数个数分别由nargin和nargout两个MATLAB保留的变量来给出。(2)第一行帮助行,即H1行以(%)开头,作为lookfor指令搜索的行(3)函数体说明及有关注解,以(%)开头,用以说明函数的作用及有关内容(4)函数体语句函数体内使用的除返回和输入变量这些在function语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在MATLAB的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量例3.3建立
7、一个自变量为m,n的函数,用其构造mn矩阵,其元素随机取均匀分布在0~9中的整数:functiona=randint(m,n)a=floor(10*rand(m,n));以上两句存为M文件randint.m.用法:A=randint(2,3)%z则A为23矩阵,其元素为随机取自0~9中的整数.函数M文件中的变量为局部变量,要想在CommandWindow或其他M文件中可调用,必须在这些地方把此变量说明为global:例如,globala;注意,M文件必须存放在MATLAB的搜索路径中才可被调用.3.2数据的输
8、入输出3.2.1input函数调用格式为:A=input(提示信息,选项);其中,提示信息为一个字符串,用于提示用户输入什么样的数据。如果在input函数调用时采用‘s’选项,则允许用户输入一个字符串。例如,想输入一个人的姓名,可采用命令:>>xm=input('What''syourname?','s')What'syourname?xiaoweixm=xiaowei目