MATLAB强制函数输出n个参数

Hov*_*tar 3 matlab

在matlab中是否有办法强制函数输出一定数量的参数?例如,这是matlab的作用:

function [a,b,c] = practice
    if nargout >=1
        a =1;
    end
    if nargout >=2
        b=2;
    end
    if nargout ==3
        c = 3;
    end
end

d(1:3) = practice()
% d = [1 1 1]
Run Code Online (Sandbox Code Playgroud)

我想要:d(1:3)= practice()%d = [1 2 3]

我可以得到这种行为,而不需要说[d(1),d(2),d(3)] = practice()

Dan*_*iel 5

当只使用单个输出参数时,有一个选项让您的函数输出所有内容:

function varargout=nargoutdemo(x)
 varargout{1}=1;
 varargout{2}=2;
 varargout{3}=3;
 if nargout==1
  varargout={[varargout{:}]};
 end
end
Run Code Online (Sandbox Code Playgroud)

对于非均匀返回数据,可能需要切换到单元格

如果您不想更改该功能,可以使用这个更通用的代码:

out=cell(1,3)
[out{:}]=practice
Run Code Online (Sandbox Code Playgroud)

请注意,这将返回一个单元格,而不是一个数组.那是因为数组以逗号分隔的列表转换不是直接可能的.

  • 有时我希望有一种直接的方法将数值数组扩展为逗号分隔的列表,如`cell`和`struct`数组. (2认同)