这是我的功能:
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);
请帮助,我不知道发生了什么。
答案 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])