输出n个参数的MATLAB力函数

输出n个参数的MATLAB力函数,matlab,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] 我想: d(1:3

在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]
我想: d(1:3)=实践() %d=[1 2 3]

我可以不用说就得到这种行为吗
[d(1),d(2),d(3)]=practice()

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

function varargout=nargoutdemo(x)
 varargout{1}=1;
 varargout{2}=2;
 varargout{3}=3;
 if nargout==1
  varargout={[varargout{:}]};
 end
end
对于非统一返回数据,可能需要切换到单元格

如果不想更改函数,可以使用更通用的代码:

out=cell(1,3)
[out{:}]=practice

请不要,这将返回一个单元格,而不是数组。这是因为数组到逗号分隔列表的转换是不可能直接实现的。

有时我希望有一种直接的方法可以将数字数组扩展到逗号分隔列表中,如
cell
struct
数组。