为了解决我的问题,让我们考虑最基本的功能
function [x, z] = main ()
x = 1;
z = 2;
endfunction
当我执行此功能时,输出为
ans = 1
而我应该得到像
这样的东西ans = 1
2
那为什么会这样呢?有什么问题?
答案 0 :(得分:6)
如果您需要Octave(或MATLAB)函数中的多个值,则需要明确询问所有这些值。如果不提供输出参数,则默认行为是仅提供第一个输出(除非用户明确指定不应存在输出varargout = {}
)并将其分配给变量ans
。
所以,如果你想要两个输出,你需要明确要求两个
[x, z] = main()
如果您希望函数在仅提供一个输出时返回x
和z
的数组,则可以使用nargout
来检测请求了多少输出参数并修改适当地返回值
function [x, z] = main()
x = 1;
z = 2;
% If there is one (or zero) outputs, put both outputs in the first output, otherwise
% return two outputs
if nargout < 1
x = [x; z];
end
endfunction
然后从你的职能之外
main()
% 1
% 2
output = main()
% 1
% 2
[x, z] = main()
% x = 1
% z = 2