【问题标题】:Matlab - bug with multiple inputsMatlab - 具有多个输入的错误
【发布时间】:2011-04-20 18:23:04
【问题描述】:

这是我的功能:

function [o1  o2] = f(t, y)
o1 = y(2);
o2 = -sin(y(1));
end

当我从命令提示符调用它时:

f(1, [2,3])
ans = 3

为什么我只看到o1? 另外,这不起作用

feval(f, 1, [2 3])

错误信息是

Input argument "y" is undefined.

Error in ==> f at 2
o1 = y(2);

请帮忙,我不知道发生了什么。

【问题讨论】:

    标签: function matlab


    【解决方案1】:

    如果你只调用没有显式输出变量的函数,它只会返回第一个输出参数,即o1,并将其分配给位桶ans。要获得这两个输出,请执行以下操作。

    [o1,o2]=f(1, [2,3])
    

    要使用feval,您应该传递一个函数句柄,它是函数的名称,前面有一个@ 符号。所以,feval(@f,1,[2,3]) 应该可以工作。

    【讨论】:

      【解决方案2】:

      feval 应该使用函数句柄或字符串调用,所以使用

      feval(@f, 1, [2,3])
      

      feval('f', 1, [2,3])
      

      正如您将看到的,这也只返回函数的第一个输出。要接收更多输出,您必须分配它们,例如

      [o1, o2] = feval(@f, 1, [2, 3])
      

      【讨论】:

      • 函数句柄版本更可取。
      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      相关资源
      最近更新 更多