本部分Matlab中的函数创建非常重要,主要分为三个小部分:
(本部分主要参考了Matlab文件的讲述:https://ww2.mathworks.cn/help/matlab/function-basics.html)。
一、函数基本知识
function语法:function [y1,...,yN] = myfun(x1,...,xM),其中[y1,...,yN]为输出量,myfun为函数名,(x1,...,xM)为函数输入量。
有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。
三个小注意事项:
注意事项一:可以将函数保存在以下位置:
1、只包含函数定义的函数文件中。文件的名称应与文件中其函数的名称一致。
2、包含命令和函数定义的脚本文件中。函数必须位于该文件的末尾。脚本文件不能与文件中的函数具有相同的名称。R2016b 或更高版本的脚本中支持函数。
注意事项二:文件可以包含多个局部函数或嵌套函数。为提高可读性,可使用 end
关键字来表示文件中每个函数的末尾。以下情况下需要 end
关键字:
文件中有任意函数包含嵌套函数。
该函数是脚本文件内的局部函数。
注意事项三:
需要在代码文件中创建函数
下面是示例部分:
(1)创建仅包含一个输出的函数
在命令行中调用函数average
(2)脚本文件中创建函数
(3)包含多个输出的函数
(4)函数文件中的多个函数
注意事项:
局部函数仅可供同一文件中的其他函数使用。
函数只能在文件中创建,不能在命令行中创建。
有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。
两种创建方式:在脚本中仅有函数命令,需要在命令行调用函数;在脚本中既有函数命令还有函数的调用命令,那么直接保存完脚本文件后,点击运行或者在命令行中输入脚本文件名称,然后点击enter。
二、在编译器中运行函数
在名称为 myfunction.m
的程序文件中创建函数。
function y = myfunction(x) y = x.^2 + x;
将键入要运行的代码替换为允许运行函数的表达式。
y = myfunction(1:10)
也可以在同一行输入多条命令,例如
x = 1:10; y = myfunction(x)
对于更复杂的多行命令,可创建单独的脚本文件,然后运行脚本。
三、函数类型
(1)文件中的局部函数和嵌套函数
程序文件可以包含多个函数。局部和嵌套函数可用于将程序分为更小的任务,使读取和维护代码变得更容易。
在仅包含函数定义的函数文件中,局部函数可以任意顺序出现在文件中主函数的后面。在包含命令和函数定义的脚本文件中,局部函数必须位于文件末尾。
例如,创建一个名为 myfunction.m
的函数文件,其中包含主函数 myfunction
以及两个局部函数 squareMe
和 doubleMe
:
可以从命令行或另一程序文件中调用主函数,但局部函数仅适用于 myfunction,可以看到主函数显示黄色。
尤其需要注意的是:局部函数和嵌套函数在文件中的位置。
(2)子文件中的私有函数:
与局部或嵌套函数一样,私有函数仅供特定位置的函数访问。但是,私有函数与可以调用它们的函数不在同一个文件中。它们位于名称为 private
的子文件夹中。仅 private
文件夹紧邻的上一级文件夹内的函数可使用私有函数。使用私有函数将代码分割为不同的文件,或在多个相关函数间共享代码。
(3)无需创建文件的匿名函数:
只要函数包含一个语句,匿名函数即允许您定义该函数而不必创建程序文件。匿名函数通常用于定义数学表达式,然后使用 MATLAB® 功能函数(即接受函数句柄用作输入的函数)基于某个值范围计算该表达式。
例如,以下语句为匿名函数创建名称为 s
的函数句柄:
s = @(x) sin(1./x);
该函数具有一个输入 x
。@
运算符创建函数句柄。
可以使用该函数句柄针对特定值计算函数,例如
也可以将该函数句柄传递给在某一值范围内计算的函数,例如