MATLAB 函数
函数是一组共同执行任务的语句。在MATLAB中,函数被定义在独立的文件中。文件名和函数名应该相同。
函数在自己的工作区内操作变量,这个工作区也被称为 局部工作区 ,与您在MATLAB命令行上访问的工作区(称为 基础工作区 )是分开的。
函数可以接受多个输入参数,并且可以返回多个输出参数。
函数语句的语法是 −
示例
下面的函数名为mymax应该写在名为mymax.m的文件中。它以五个数字作为参数,并返回这些数字中的最大值。
创建一个名为mymax.m的函数文件,并在其中键入以下代码−
函数的第一行以关键字 function 开头。它给出了函数的名称和参数的顺序。在我们的例子中,mymax函数有五个输入参数和一个输出参数。
函数语句之后的注释行提供了帮助文本。在输入−时,这些行将被打印出来。
MATLAB 将执行上述语句并返回以下结果 −
你可以通过以下方式调用该函数: −
MATLAB将执行上述语句并返回以下结果−
匿名函数
匿名函数就像传统编程语言中的内联函数,它在单个MATLAB语句内定义。它由一个MATLAB表达式和任意数量的输入和输出参数组成。
您可以在MATLAB命令行或函数或脚本中定义一个匿名函数。
这样,您就可以创建简单的函数而无需为它们创建文件。
从表达式创建匿名函数的语法如下:
示例
在这个例子中,我们将编写一个名为power的匿名函数,它将接受两个数字作为输入,并返回第一个数字的第二个数字的幂。
创建一个脚本文件,并键入以下代码:
当你运行该文件时,它显示为−
主要和子函数
除了匿名函数之外的任何函数都必须在文件中定义。每个函数文件都包含一个必需的主要函数,该函数首先出现,以及任意数量的可选子函数,后者紧随主要函数出现并由其使用。
主要函数可以从定义它们的文件外部调用,无论是从命令行还是从其他函数调用,但是子函数无法从命令行或其他函数调用,在函数文件外部使用。
子函数只对定义它们的函数文件中的主要函数和其他子函数可见。
示例
让我们编写一个名为quadratic的函数,用于计算二次方程的根。该函数将接受三个输入,二次系数、线性系数和常数项。它将返回根。
函数文件quadratic.m将包含主要函数quadratic和子函数disc,用于计算判别式。
创建一个函数文件quadratic.m,并在其中输入以下代码−
你可以从命令提示符中调用上述函数,如下所示 −
MATLAB将执行上述语句并返回以下结果 –
嵌套函数
您可以在另一个函数的主体内定义函数。这些被称为嵌套函数。嵌套函数包含其他任何函数的任何或所有组件。
嵌套函数在另一个函数的作用域内定义,并且它们共享对包含函数的工作区的访问。
嵌套函数遵循以下语法−
示例
让我们重新编写函数quadratic,从上一个示例中,然而,这次disc函数将是一个嵌套函数。
创建一个函数文件quadratic2.m,并在其中输入以下代码 –
可以在命令提示符中调用上述函数,方法如下−
MATLAB将执行上述语句并返回以下结果−
私有函数
私有函数是仅对一组有限的其他函数可见的主要函数。如果您不想暴露函数的实现,可以将它们创建为私有函数。
私有函数位于具有特殊名称“private”的 子文件夹 中。
它们仅对父文件夹中的函数可见。
示例
让我们重新编写二次函数。但是这次,计算判别式的 disc 函数将是一个私有函数。
在工作目录中创建一个名为 private 的子文件夹。以下是一个存储在其中的函数文件: disc.m 。
在您的工作目录中创建一个名为quadratic3.m的函数,并在其中键入以下代码-
您可以从命令提示符中调用上述函数,如下所示 –
Matlab将执行以上语句并返回以下结果−
全局变量
全局变量可以被多个函数共享。为此,您需要在所有函数中将变量声明为全局变量。
如果您想从基础工作空间访问该变量,那么请在命令行中声明该变量。
全局声明必须在变量在函数中实际使用之前进行。将全局变量的名称用大写字母来区分它们和其他变量是个好习惯。
示例
让我们创建一个名为average.m的函数文件,并在其中输入以下代码 –
创建一个脚本文件并在其中输入以下代码−
当您运行该文件时,它将显示以下结果 –