【问题标题】:Passing functions as arguments in Matlab在 Matlab 中将函数作为参数传递
【发布时间】:2011-02-13 08:59:16
【问题描述】:

我正在尝试编写一个函数,它获取两个数组和另一个函数的名称作为参数。

例如

main.m:

    x=[0 0.2 0.4 0.6 0.8 1.0];
    y=[0 0.2 0.4 0.6 0.8 1.0];

    func2(x,y,'func2eq')

func 2.m :
    function t =func2(x, y, z, 'func')   //"unexpected matlab expression" error message here    
    t= func(x,y,z);

func2eq.m:  
    function z= func2eq(x,y)

    z= x + sin(pi * x)* exp(y);

Matlab 告诉我上面的错误信息。我以前从未将函数名作为参数传递。我哪里错了?

【问题讨论】:

    标签: matlab function


    【解决方案1】:

    你可以试试func2.m:

    function t = func2(x, y, funcName)  % no quotes around funcName
        func = str2func(funcName)
        t = func(x, y)
    end
    

    【讨论】:

    • 至少在 v. 2015 中,如果您不引用 funcName,MATLAB 解释器需要提供参数。你以为 funcName 是句柄吗?
    【解决方案2】:

    您也可以使用函数句柄而不是字符串,如下所示:

    main.m:

    ...
    func2(x, y, @func2eq); % The "@" operator creates a "function handle"
    

    这简化了func2.m:

    function t = func2(x, y, fcnHandle)
        t = fcnHandle(x, y);
    end
    

    有关更多信息,请参阅function handles 上的文档

    【讨论】:

      猜你喜欢
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 2023-04-02
      相关资源
      最近更新 更多