参考: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 />```matlabfunction [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.3400stdev =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.3400stdev =29.4124
