Matlab中function函数的使用

目录

语法

说明

示例

包含一个输出的函数

包含多个输出的函数

脚本文件中的函数

函数文件中的多个函数

带参数验证的函数


        function函数是声明函数名称、输入和输出。

语法

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

说明

function [y1,...,yN] = myfun(x1,...,xM) 声明名为 myfun 的函数,该函数接受输入 x1,...,xM 并返回输出 y1,...,yN。此声明语句必须是函数的第一个可执行代码行。有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。

        可以将函数保存在以下位置:

  • 只包含函数定义的函数文件中。文件的名称须与文件中第一个函数的名称一致。

  • 包含命令和函数定义的脚本文件中。函数必须位于该文件的末尾。脚本文件不能与文件中的函数具有相同的名称。R2016b 或更高版本的脚本中支持函数。

        ​文件可以包含多个局部函数或嵌套函数。为提高可读性,可使用 end 关键字来表示文件中每个函数的末尾。以下情况下需要 end 关键字:

  • 文件中有任意函数包含嵌套函数。

  • 该函数是函数文件中的局部函数,并且文件中有局部函数使用end关键字。

  • 该函数是脚本文件内的局部函数。

示例

包含一个输出的函数

        在名为 average.m 的文件中定义一个函数,该函数接受一个输入向量,计算各个值的平均值,然后返回单个结果。

function ave = average(x)
    ave = sum(x(:))/numel(x); 
end

        从命令行调用该函数。

z = 1:99;
ave = average(z)
ave =
    50

包含多个输出的函数

        在名为stat.m的文件中定义一个函数,该函数返回输入向量的均值和标准差。

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

脚本文件中的函数

        在名为 integrationScript.m 的文件中定义一个脚本,以计算被积函数在 $2\pi/3$ 处的值,并计算曲线下方从 0 到 $\pi$ 的面积。包括一个局部函数,用于定义被积函数 $y = \sin(x)^3$

注意:在脚本中包括函数需要安装 MATLAB® R2016b 或更高版本。

% Compute the value of the integrand at 2*pi/3.
x = 2*pi/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
y =

    0.6495


a =

    1.3333

函数文件中的多个函数

        在名为 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

带参数验证的函数

        定义一个函数,该函数将输入限制为不包含 Inf 或 NaN 元素的数值向量。此函数使用 arguments 关键字,该关键字在 MATLAB® 版本 R2019b 及更高版本中为有效关键字。

function [m,s] = stat3(x)
    arguments
        x (1,:) {mustBeNumeric, mustBeFinite}
    end
    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

​        在 arguments 代码块中,(1,:) 表示 x 必须为向量。验证函数 {mustBeNumeric, mustBeFinite} 将 x 中的元素限制为非 Inf 或 NaN 的数值。可以参考函数参数验证。

        如果调用函数时所带的向量包含 NaN 元素,则违反了输入参数声明。此违规会导致 mustBeFinite 验证函数引发错误。

values = [12.7, 45.4, 98.9, NaN, 53.1];
[ave,stdev] = stat3(values)
Invalid input argument at position 1. Value must be finite.

  • 85
    点赞
  • 664
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: 在MATLAB,可以使用function函数来定义自己的函数。要调用一个函数,可以使用函数名和参数列表来调用它。例如,如果有一个名为myfunc的函数,它需要两个参数x和y,那么可以使用以下语法来调用它: result = myfunc(x, y); 其result是函数返回的结果。在调用函数时,需要确保传递正确的参数类型和数量。 ### 回答2: 在MATLAB,可以使用function关键字来定义自己的函数,并在代码的其他部分进行调用。 函数定义的一般格式为: function [输出参数1, 输出参数2, ...] = 函数名(输入参数1, 输入参数2, ...) % 函数体 % 可以在函数进行各种操作和计算 % 使用输入参数进行计算,然后返回输出参数 在调用函数前,需要将函数定义保存在一个单独的.m文件,并确保该文件所在的文件夹被MATLAB搜索路径包含。 要在代码的其他部分调用函数,只需使用函数名和所需的参数。例如,如果函数名为"myFunction",且有两个输入参数a和b,一个输出参数c,则可以在代码这样调用函数: c = myFunction(a, b); 在函数调用时,输入参数按照定义的顺序依次传入函数。在函数,可以使用这些输入参数进行计算,并将结果保存在输出参数。如果有多个输出参数,则需要使用方括号将它们括起来。在调用函数后,输出参数的值可以在代码继续使用。 一个常见的例子是定义一个求和函数function sum = mySum(a, b) sum = a + b; end 然后,在代码其他部分可以这样调用该函数: result = mySum(3, 4); disp(result); % 输出结果:7 总之,MATLAB函数调用需要进行函数定义,并在需要的地方使用函数名和参数进行调用。调用函数时,输入参数按照定义的顺序传递给函数函数使用这些参数进行计算,并将结果保存在输出参数,以供代码其他部分使用。 ### 回答3: 在MATLABfunction函数用于定义用户自定义的函数。通过使用function函数,可以按照自己的需求编写函数代码,从而实现特定的功能。函数定义的基本语法如下: ``` function [输出参数] = 函数名(输入参数) 函数体 end ``` 其,[输出参数]指的是函数在执行完后要返回的结果。函数体是实现特定功能的代码。输入参数是函数执行时传入的参数。 当我们在MATLAB定义了一个函数后,在其他程序可以通过函数名来调用这个函数。具体调用函数的方法有两种: 1. 在命令窗口直接调用:可以直接在命令窗口输入函数名和所需参数来调用函数。例如,如果一个函数名为myFunction,有两个输入参数a和b,可以在命令窗口输入myFunction(a, b)来调用该函数。 2. 在脚本或其他函数调用:可以在脚本文件或其他函数调用已经定义的自定义函数。需要通过函数名和所需参数来调用函数,并将返回结果保存在变量。例如,在脚本文件可以这样调用函数并保存结果: ``` result = myFunction(a, b); ``` 以上就是MATLABfunction函数的调用方法。函数的调用可以实现代码的模块化和复用,提高程序的可读性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值