第六节 M文件.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 M文件 随着科学计算任务的复杂,Matlab语句也必然会随之增加,此时,已不可能以命令行的方式进行批量运算.为此Matlab提供了M文件,以解决该问题.之所以称为m文件,是指代码文件通常以“M”为扩展名. M文件又分为两类:脚本(Scripts),函数(Functions) 一、脚本 脚本中包含了Matlab命令集合,在命令窗口下输入文件名,即可执行该脚本文件中的所有命令,所产生的变量都保存在基本工作空间中. M文件是一个普通文本文件,可用各种文本编辑器修改,也可以在Matlab命令窗口用“edit文件名”或“open文件名”来进行编辑. 特点: l?????? M文件是一个普通的文本文件,可以用各种文本编辑器编辑。MATLAB提供了专门的M文件编辑器。 l?????? 文件所产生的变量都存放在基本工作空间中。 优点: l?????? 适于运行简单但重复性高的代码; l?????? 变量保留在基本工作空间中,容易进行查看和调试。 缺点: l?????? 不支持变量的输入和输出功能; l?????? 容易产生变量的冲突和相互覆盖从而造成程序错误。 二、函数 1.基本概念 函数也是M文件的一种,可以接受变量输入,并实现结果的变量输出.运算所产生的变量都存在于本身的工作空间,函数运行完毕各变量则全部清除,所以不会和基本工作空间的变量相互冲突. 我们举例编写一个简单的函数,文件名为func1.m,内容为: function aver=func1(vector) aver=sum(vector) / length(vector); 第一行为函数定义行,定义了函数名,输入自变量,输出自变量; 第二行后为函数主体,定义了函数的功能. 调用该函数,可用如下形式: a=[1 5 3 ]; b=func1(a) ? b=3 ?几个注意点: 函数可以加注解,以%之后加入注解语句,若在定义行之后加入连续注解作为函数的在线帮助,可以用help函数件名察看. 例如func2.m 我们可以将自己编写或用到的相关函数都存于一目录中,并于搜索路径中加入该目录,这样在任何位置都可以执行这些函数. 文件名与函数名最好相同,若不同,Matlab则用文件名调用文件而忽视函数名. 一个函数可有多个输入、输出值.例如func3.m 对于函数变量的传递,Matlab都对父工作区间的变量建立一份拷贝,传递至函数空间.因此,若改变其数值不会影响父空间原变量的值. 2 函数的内建变量 函数中使用nargin和nargout代表函数的输入和输出变量,在函数中使用它们来确定对于不同的输入输出情况,函数应采取怎样的处理方式。(例如func4.m ) 3.子函数和私有目录 子函数: 一个M文件可包含多个函数,只有一个主函数,其余均为子函数.子函数只能在文件本身被调用,不能被其他文件使用,并且主函数必须在文件的最前面,后面的子函数次序无限制.例如func5.m 私有目录: 我们可以在某目录,如mydir下建立一名为“private”的子目录,则mydir下的所有M文件(无论是脚本还是函数)都可任意调用private,目录下的函数而不必另行规定搜索路径,而private目录下的函数只可被其父目录的文件调用. 我们从一个文件调用某函数时, Matlab的搜索顺序为: ? 检查是否为子函数 ? 检查是否为私有目录下的函数 ? 搜索设定路径 若找到第一个文件名相符的函数即停止寻找. 3.局部变量与全部变量 我们前面介绍过,基本工作空间与函数空间相互独立.工作在不同工作空间的变量被称为局部变量(Local Variables).若为减少变量的传递,我们可以使用全局变量(Global Variables),但必须事前声明: global 变量1 ?变量2…… 只要在基本空间或函数中声明,则对其作出的改变将存在于不同空间.因此,应尽量少用全局变量. 若要清除该全局变量,则使用“ clear global”命令. 举例如func6.m 练习题 1.编写一函数project1.m,输出输入格式为: Out=project1(x,u) 其中x和u是两个向量,如果向量维数相同则输出是2个向量的和,如果维数不同,则补齐向量的维数,然后求和。 2.由基本代数理论可知,一个实系数的一元三次方程式,必有一个实数解。试写一函数trizero.m 输出格式为root=trizero(coef)

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档