参考:MATLAB帮助文档
function
-
语法
function
**[y1,...,yN] = myfun(x1,...,xM)
**说明
function ``[y1,...,yN] = myfun(x1,...,xM)
- 声明名为
myfun
的函数,该函数接受输入x1,...,xM
,并返回输出y1,...,yN
。 - 此声明语句必须是函数的第一个可执行代码行。
- 有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。
- 声明名为
- 您可以将函数保存在以下位置:
- 只包含函数定义的函数文件中,文件的名称应与文件中其函数的名称一致。
- 包含命令和函数定义的脚本文件中。函数必须位于该文件的末尾。
- 脚本文件不能与文件中的函数具有相同的名称。
- 脚本文件不能与文件中的函数具有相同的名称。
- 只包含函数定义的函数文件中,文件的名称应与文件中其函数的名称一致。
文件可以包含多个局部函数或嵌套函数。为提高可读性,可使用
end
关键字来表示文件中每个函数的末尾。以下情况下需要end
关键字:在名为
average.m
的文件中定义一个函数在名为
integrationScript.m
的文件中定义一个脚本,以计算被积函数在 处的值,并计算曲线下方从 0 到 的面积。包括一个局部函数,用于定义被积函数 。 ```matlab % Compute the value of the integrand at 2pi/3. x = 2pi/3; y = myIntegrand(x) % Compute the area under the curve from 0 to pi. xmin = 0; xmax = pi; f = @myIntegrand; a = integral(f,xmin,xmax)
%% 函数放在脚本文件的最后,且脚本文件名与函数名不能一样 function y = myIntegrand(x) y = sin(x).^3; end
- 运行`integrationScript.m`, 输出:y = 0.6495 a = 1.3333
<a name="btexm36"></a>
### 包含多个输出的函数
- 在名为 **`stat.m`** 的文件中定义一个函数,该函数返回输入向量的均值和标准差。<br />
```matlab
function [m,s] = stat(x)
n = length(x);
m = sum(x)/n;
s = sqrt(sum((x-m).^2/n));
end
从命令行调用该函数。
>> values = [12.7, 45.4, 98.9, 26.6, 53.1];
>> [ave,stdev] = stat(values)
ave =
47.3400
stdev =
29.4124
函数文件中的多个函数
- 在名为
stat2.m
的文件中定义两个函数,其中第一个函数调用第二个函数。
%% 文件名与第一个函数名一致
function [m,s] = stat2(x)
n = length(x);
m = avg(x,n);
s = sqrt(sum((x-m).^2/n));
end
%% 上面的函数调用下面这个函数
function m = avg(x,n)
m = sum(x)/n;
end
- 函数
avg
是局部函数。局部函数仅可供同一文件中的其他函数使用。 - 从命令行调用函数
stat2
。>> values = [12.7, 45.4, 98.9, 26.6, 53.1];
>> [ave,stdev] = stat2(values)
ave =
47.3400
stdev =
29.4124