您的位置:首页 > 编程语言 > MATLAB

Matlab 学习 入门篇 三 M文件

2014-01-29 22:55 204 查看
m文件分为脚本文件和函数文件。

脚本文件就是 打在命令窗口的一些指令,只不过是这些个指令比较的繁杂,重复率比较高,所以写在一个文件里了,以后需要对某个数据这么处理,直接调用,然后实现某个功能,它所产生的数据,会在workspace中停留。比如一道特别水的acm题:

密文和电文进行转换,每个字母变换为其之后的第4个字母,A变E,最后四个循环回来。

可以吧上述的功能写进一个.m文件里;

如:



结果是:



其实就目前而言我感觉,这种脚本文件,就像是没有返回值的函数。

那么,下面说说函数文件:

既然是函数了,那么每回运行时,都会个函数开辟临时工作空间,称之为函数工作区间

下面展示一个函数递归求和问题。

比如:

S = 1+2x3+3x4+4x5+……+n(n+1)

n为输入的参数

则:



结果是:



然后,我觉得重点来了,matlab 把函数分的很细,我选出有意思的记录:

1.M文件主函数

每个M文件的第一行定义的函数就是M文件的主函数,一个M文件只能有一个主函数,

习惯上主函数的名字和文件的名字是一致的。之所以有主函数一说,是相对子函数和嵌套函数来说的,一个M文件中,除了主函数外还可以编写多个嵌套函数和子函数。

2.子函数

编写在主函数后的函数成为子函数。所有的子函数只能被其所在的M文件的主函数和其他子函数调用。子函数有自己独立的函数申明和帮助等结构,子函数之间的相互顺序没有限制。

3.匿名函数

匿名函数是自MATLAB 7.0版起给出的一种全新的函数描述形式,其一般使用格式为:



  其中expr 是有效的表达式,arg1,arg2,......是指定的出现在expr里的变量名称,fun 是所定义的匿名函数的名称

4.嵌套函数

一个函数内部,可以定义一个或多个函数,这种定义在其他函数内部的函数就被称为嵌套函数。一个函数内部可以嵌套多个函数,这些嵌套函数内部又可以继续嵌套其他函数。

       嵌套函数的书写语法格式如下:



例如,汉诺塔:



结果是:



5.私有函数

       私有函数是具有限制性访问权限的函数,它们对应的M文件需要保存在名为private的文件夹下,这些私有函数代码编写上和普通的函数没有什么区别,但私有函数只能被private目录的直接父目录下的函数调用。因此,用户可以开发自己的函数库,函数的名称可以与系统标准M函数库名称相同,而不必担心在函数调用时发生冲突,因为 MATLAB首先查找私有函数,再查找标准函数。

       同样的,我们也可以通过help命令获取私有函数的帮助信息,但需要声明其私有特点,例如要获取私有函数myprifun.m的帮助信息,可以使用语句help private/myprifun。(摘自网络)

6.重载函数

    MATLAB中重载函数通常放置在不同的文件夹下,通常文件夹名称以符号@开头,然后跟一个代表MATLAB数据类型的字符,如@double目录下的重载函数的输入参数应该是双精度浮点型,而@int32目录下的重载函数的输入参数应该是32位整型。(摘自网络)

值得一提的是串演算函数

相当有意思,这些函数可以把一些有意义的字符串当做命令来执行

比如:

1.eval函数



2.内联函数

      


3.feval函数

 MATLAB提供的feval函数是用来执行函数操作的函数 ,有“函数的函数”之称



变量的传递与检测

       MATLAB中,提供了多种函数来实现变量检测、传递,同时也提供了“变长度”输入输出变量。灵活使用这些命令可以完成多种复杂的功能。

输入输出变量检测

       在MATLAB中,提供了多个变量检测命令,它们用于实现判断输入和输出变量的个数的功能,见表。



“变长度”输入输出变量

         MATLAB中提供了一些函数具有接受“任意多输入”,返回“任意多输出”的能力,同时,MATLAB也为用户自行编写“变长度”变量函数提供了两个函数:varargin和varargout,它们是一个元胞数组,必须处于输入或输出参数列表中的最后一个位置。varargin的工作机理是当函数文件被调用时,函数输入变量的分配规则是:首先,输入变量依先后次序逐个对应分配给函数文件输入变量列表中那些被明确定义的“普通”输入变量;然后,把剩余的输入变量依次逐个分配到varargin元胞数组中。因此,varargin元胞数组的长度取决于分配到的输入变量数。varargout的工作机理、规则与varargin相同,差别仅在于varargout承载的是输出变量和输出变量之间的配置关系。(摘自网络)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 初学者 递归