八度:函数不会返回多个值

时间:2017-01-08 10:39:23

标签: function return-value octave

为了解决我的问题,让我们考虑最基本的功能

function [x, z] = main ()
  x = 1;
  z = 2;
endfunction

当我执行此功能时,输出为

  

ans = 1

而我应该得到像

这样的东西
ans = 1

      2

那为什么会这样呢?有什么问题?

1 个答案:

答案 0 :(得分:6)

如果您需要Octave(或MATLAB)函数中的多个值,则需要明确询问所有这些值。如果不提供输出参数,则默认行为是仅提供第一个输出(除非用户明确指定不应存在输出varargout = {})并将其分配给变量ans

所以,如果你想要两个输出,你需要明确要求两个

[x, z] = main()

如果您希望函数在仅提供一个输出时返回xz的数组,则可以使用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