资源描述:
《matlab第六讲2012》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六讲Matlab提供的工作方式包括:1交互式指令操作:用户在命令窗口输入命令,系统执行现实结果,适合于简单的问题的处理2M文件的编程工作:调用函数文件执行程序M文件是由Matlab语句构成的ASCII码文本文件,扩展名为.m。M文件有两种形式:M脚本文件和M函数文件。一M文件1M文件的创建和执行2M脚本文件和函数文件3M文件的结构1)M文件创建,保存,打开和编辑。(见演示)2)搜索和执行M文件:执行方法:用户在命令窗口键入M文件名,并按下回车键来执行。系统首先搜索该文件,若文件存在,以解释方式按顺序执行M文件的语句。搜索过程:检查工作空间是否有该名称
2、检查是否为MATLAB内部函数检查当前目录在默认搜索路径中查找文件1M文件的创建和执行2脚本文件和函数文件1)M脚本文件是一串按用户意图排列而成的(包括控制流指令)matlab指令集合。脚本文件中的命令格式和前后位置,与在命令窗口中输入的没有任何区别。脚本文件的特点:1)MATLAB在运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到MATLAB命令窗口中去执行。2)与在命令窗口中直接运行命令一样,脚本文件运行产生的变量都是驻留在MATLAB的工作空间(workspace)中,可以很方便地查看变量,除非用clear命令清除;脚本文件的命令也可
3、以访问工作空间的所有数据,因此要注意避免变量的覆盖而造成程序出错。3)脚本文件创建或定义的变量保留在工作空间中,因此空间中的其他命令文件和函数文件都可以访问这些变量。4)因此在程序设计中,脚本文件常作为主程序来设计。2)M函数文件与脚本文件不同,函数文件是一个黑箱,从外界只能看到传给它的输入量和送出来的计算结果,内部运行是不可见的.它的特点是:(1)从形式上看,与脚本文件不同,函数文件的第一行总是以”function”引导的函数申明行,该行还罗列出函数与外界联系的全部标称输入输出宗量.对输入输出宗量的数目没有限制.即可以没有输入输出宗量,也可以是任意多
4、个数目.function[输出变量列表]=函数名(输入变量列表)函数声明格式:(2)matlab允许使用比标称数目少的输入输出宗量,实现对函数的调用.(3)函数文件保存的文件名应该和用户定义的函数名一致。(4)从运行上看,与脚本文件不同.函数文件运行时,matlab会专门为它开辟一个临时工作空间,称为函数工作空间.所有中间变量都存放在函数工作空间.当执行完文件最后一条指令或遇到return时,就结束该函数文件的运行,同时该临时函数空间及其所有的中间变量就立即被清除.(6)假如在函数文件中,发生对某脚本文件的调用,那么该脚本文件运行产生的所有变量都存放在
5、该函数空间中,而不是在基本空间.(5)函数空间随具体M函数文件的调用而产生,随调用结束而删除.函数空间是相对基本空间独立的,临时的.在matlab整个运行期间,可以产生任意多个临时函数空间.3M函数文件的一般结构(1)函数申明行:位于函数文件的首行,以matlab关键字function开头,函数名以及函数的输入输出宗量都在这一行定义.(2)H1行:紧随函数申明行之后以%开头的第一注释行.包括:大写体的函数文件名,运用关键词简要描述函数功能.该行供lookfor关键词查询和help在线帮助使用.(3)在线帮助文本区:H1行及其之后的连续以%开头的所有注释
6、行构成的整个在线帮助文本.通常包括:函数输入输出宗量的含义,调用格式说明.(4)编写和修改记录:以%开头,注释编写和修改的日期,版本记录.(5)函数体:是实现M文件功能的指令集.它接收输入宗量,进行程序流程控制,得到输出宗量.如果仅从运算角度看,只有函数申明行和函数体两部分是构成M函数文件必不可少的.说明:●从结构上看,M脚本文件仅比M函数文件少一个函数申明行,其余各部分的构造和作用都相同●函数定义名和保存文件名一致.两者不一致时,将忽视文件首行的函数定义名,而以保存文件名为准.●函数文件的名字必须以字母开头,后面可以是字母,下划线以及数字的任意组合.
7、例M函数文件示例%[circle.m]functionsa=circle(r,s)%函数申明行%CIRCLplotacirlceofradiarinthelinespecifiedbys%r指定半径数值%s指定线型颜色的字符串%sa圆面积%%circle(r)利用蓝实线画半径为r的圆%circle(r,s)利用s指定的颜色画半径为r的圆%sa=circle(r)计算圆面积,并画半径为r的兰色圆周%sa=circle(r,s)计算圆面积,并画半径为r的圆,s指定线的颜色%编写于x年x月x日,修改于x年x月x日ifnargin>2error('输入宗量太多
8、');end;ifnargin==1s='b';end;clf;t=0:pi/100:2*pi