MATLAB 强制函数输出 n 个参数

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) = practice() % d = [1 2 3]

是否有方法可以不需要写成以下形式就能实现同样的效果呢? [d(1),d(2),d(3)] = practice()

1个回答

5

如果只使用单个输出参数,可以选择让您的函数输出所有内容:

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

请注意,此处返回的是单元格而非数组。这是因为直接将数组转换为逗号分隔列表不可行。

2
有时候我希望有直接将数字数组扩展成逗号分隔列表的方法,就像 cellstruct 数组一样。 - TroyHaskin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接