Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 将varargin解包为单个变量_Function_Matlab_Arguments - Fatal编程技术网

Function 将varargin解包为单个变量

Function 将varargin解包为单个变量,function,matlab,arguments,Function,Matlab,Arguments,我正在为一个函数编写一个包装器,该函数将varargin作为其输入。我想在包装器中保留函数签名,但是嵌套varargin会导致所有变量集中在一起 function inner(varargin) %#ok<VANUS> % An existing function disp(nargin) end function outer(varargin) % My wrapper inner(varargin); end outer('foo', 1:3, {}) % Uh-oh,

我正在为一个函数编写一个包装器,该函数将varargin作为其输入。我想在包装器中保留函数签名,但是嵌套
varargin
会导致所有变量集中在一起

function inner(varargin) %#ok<VANUS>
% An existing function
disp(nargin)
end

function outer(varargin)
% My wrapper
inner(varargin);
end

outer('foo', 1:3, {})   % Uh-oh, this is 1

有人能想出一种不那么可怕的做事方式吗?

应该改为内外兼备

inner(varargin{:})

换句话说,将varargin扩展到逗号分隔的列表中,以调用内部。这样就可以避免所有的混乱。

出于好奇,有没有一种等效的数组分割方法?就像一个更好的
c=arrayfun(@(x)x,1:3,'UniformOutput',false);c{:}
。不确定它是否更好,但您可能可以使用cell2mat的变体。arrayfun怎么了,神秘的?如果预先分配输出,也可以使用for循环。我认为对于大小合理的阵列来说,性能不是一个大问题。
inner(varargin{:})