MATLAB 函数

17 Mar 2025 | 5 分钟阅读

函数是能够获取输入参数并返回输出参数的 **M 文件**。M 文件名和函数名必须相同。函数在其自己的工作区(也称为**局部工作区**)中对变量执行操作,该工作区与您在 MATLAB 提示符下访问的工作区(称为**基础工作区**)是分开的。

函数文件类似于 FORTRAN 中的程序或子程序、PASCAL 中的操作以及 C 中的函数。

函数文件以函数定义行开头,该行具有定义明确的输入和输出记录。没有这一行,文件将成为脚本文件。

语法

其中 **function_name** 必须与函数所在的文件名(不带 .m 扩展名)相同。例如,如果函数名为 projectile,则必须将其写入并存储在名为 **projectile.m** 的文件中。函数定义行的外观会略有不同,具体取决于是否存在无输出、单个输出或多个输出。

示例

M 文件函数结构

这个简单的函数展示了 M 文件的基本组成部分。

下表简要定义了这些 M 文件部分的每一项。函数和脚本都可以包含所有这些元素,但函数定义行除外,后者仅适用于函数。

M 文件元素描述
函数定义行(仅限函数)它定义了函数名以及输入和输出参数的数量和顺序。
H1 行对程序的单行摘要定义,在您请求整个目录的帮助时,或者在使用 lookfor 时显示。
帮助文本对程序的更详细定义,在您请求特定函数的帮助时,与 H1 行一起显示。
函数或脚本体执行实际求值并将值赋给任何输出参数的程序代码。
注释程序体内的文本,描述程序的内部工作原理。

函数定义行

函数定义行通知 MATLAB 该 M 文件包含一个函数,并指定函数的参数调用顺序。fact 函数的函数定义行是

MATLAB Functions

函数名

函数名以字母开头,包含字母数字字符和下划线,或者长度不能超过最高长度(由函数 namelengthmax 返回)。由于变量必须遵循相同的规则,我们可以使用 isvarname 函数来分析函数名是否有效。

包含 MATLAB 函数的文本文件的名称由函数名加上扩展名 **.m** 组成。例如,

如果文件名和函数定义行名称不同,则会忽略内部(函数)名称。因此,如果 average.m 是定义名为 computeAverage 的函数的文件的名称,我们将通过键入以下命令来调用该函数:

函数参数

如果函数有多个输出值,请将输出参数列表括在方括号中。输入参数括在函数名后面的括号中。使用逗号分隔多个输入或输出参数。这是具有三个输入和三个输出的 sphere 函数的声明:

H1 行

H1 行是帮助文本的第一行,是函数定义行后面的一个注释行。因为它包含注释文本,所以 H1 行以百分号 (%) 开头。对于 average 函数,H1 行是:

这是用户在 MATLAB 提示符下键入 help function_name 时出现的文本的第一行。此外,lookfor 函数在此基础上进行搜索并仅显示 H1 行。因为这一行提供了 M 文件的重要摘要信息,所以有必要使其尽可能具有描述性。

帮助文本

我们可以通过在 M 文件程序开头输入一个或多个连续的注释行作为帮助文本来创建 M 文件的在线帮助。MATLAB 将紧跟在 H1 行后面的、以 % 开头的连续行组视为函数的在线帮助文本。第一个不是以 % 作为最左侧字符的行将结束帮助。

average 函数的帮助文本是:

当我们在命令提示符下键入 help function_name 时,MATLAB 会显示 H1 行以及这些函数的在线帮助文本。帮助系统会忽略此帮助块之后的任何注释行。

函数或脚本体

函数体包含执行计算并将值赋给输出参数的所有 MATLAB 代码。函数体内的语句可以包括函数调用、流程控制语句等编程方法、交互式输入和输出、求值、赋值、注释和空行。

例如,average 函数的函数体包含一些简单的编程语句:

注释

注释行以百分号 (%) 开头。注释行可以出现在 M 文件的任何位置,我们也可以在代码行的末尾添加注释。例如:

% 将所有向量元素相加。
y = sum(x)       % 使用 sum 函数。

除了注释行,我们还可以在 M 文件的任何位置插入空行。空行将被忽略。但是,空行可以表示 M 文件的帮助文本条目的结束。