Matlab - 多个输入的bug

时间:2011-04-20 18:23:04

标签: function matlab

这是我的功能:

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);

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

2 个答案:

答案 0 :(得分:3)

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

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

要使用feval,您应该传递一个函数句柄,该函数句柄是以@符号开头的函数的名称。因此,feval(@f,1,[2,3])应该有用。

答案 1 :(得分:3)

应该使用函数句柄或字符串调用feval,因此请使用

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

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

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

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