Matlab程序设计(六)----创建函数(function)

时间:2024-02-25 17:33:00

本部分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@ 运算符创建函数句柄。

可以使用该函数句柄针对特定值计算函数,例如

也可以将该函数句柄传递给在某一值范围内计算的函数,例如