参考:MATLAB帮助文档

function

  • 声明函数名称、输入和输出

    语法

    function**[y1,...,yN] = myfun(x1,...,xM)**

    说明

  • function ``[y1,...,yN] = myfun(x1,...,xM)

    • 声明名为 myfun 的函数,该函数接受输入 x1,...,xM ,并返回输出 y1,...,yN
    • 此声明语句必须是函数的第一个可执行代码行。
    • 有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。
  • 您可以将函数保存在以下位置:
    • 只包含函数定义的函数文件中,文件的名称应与文件中其函数的名称一致。
    • 包含命令和函数定义的脚本文件中。函数必须位于该文件的末尾。
      • 脚本文件不能与文件中的函数具有相同的名称。
  • 文件可以包含多个局部函数或嵌套函数。为提高可读性,可使用 end 关键字来表示文件中每个函数的末尾。以下情况下需要 end 关键字:

    • 文件中有任意函数包含嵌套函数。
    • 该函数是函数文件中的局部函数,并且文件中有局部函数使用 end 关键字。
    • 该函数是脚本文件内的局部函数。

      包含一个输出的函数

  • 在名为 average.m 的文件中定义一个函数

    • 该函数接受一个输入向量,计算各个值的平均值,然后返回单个结果。
      1. %% 定义函数文件,函数名与文件名一致
      2. function y = average(x)
      3. if ~isvector(x)
      4. error('Input must be a vector')
      5. end
      6. y = sum(x)/length(x);
      7. end
      1. % 从命令行调用该函数。
      2. >>z = 1:99;
      3. >>average(z)
      4. ans =
      5. 50

      脚本文件中的函数

  • 在名为 integrationScript.m 的文件中定义一个脚本,以计算被积函数在 【MATLAB】function:函数 - 图1 处的值,并计算曲线下方从 0 到 【MATLAB】function:函数 - 图2 的面积。包括一个局部函数,用于定义被积函数 【MATLAB】function:函数 - 图3。 ```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

  1. - 运行`integrationScript.m` 输出:y = 0.6495 a = 1.3333
  2. <a name="btexm36"></a>
  3. ### 包含多个输出的函数
  4. - 在名为 **`stat.m`** 的文件中定义一个函数,该函数返回输入向量的均值和标准差。<br />
  5. ```matlab
  6. function [m,s] = stat(x)
  7. n = length(x);
  8. m = sum(x)/n;
  9. s = sqrt(sum((x-m).^2/n));
  10. end

从命令行调用该函数。

  1. >> values = [12.7, 45.4, 98.9, 26.6, 53.1];
  2. >> [ave,stdev] = stat(values)
  3. ave =
  4. 47.3400
  5. stdev =
  6. 29.4124

函数文件中的多个函数

  • 在名为 stat2.m 的文件中定义两个函数,其中第一个函数调用第二个函数。


  1. %% 文件名与第一个函数名一致
  2. function [m,s] = stat2(x)
  3. n = length(x);
  4. m = avg(x,n);
  5. s = sqrt(sum((x-m).^2/n));
  6. end
  7. %% 上面的函数调用下面这个函数
  8. function m = avg(x,n)
  9. m = sum(x)/n;
  10. end
  • 函数 avg局部函数。局部函数仅可供同一文件中的其他函数使用。
  • 从命令行调用函数 stat2
    1. >> values = [12.7, 45.4, 98.9, 26.6, 53.1];
    2. >> [ave,stdev] = stat2(values)
    3. ave =
    4. 47.3400
    5. stdev =
    6. 29.4124