Unpacking varargin to individual variables
Posted
by Richie Cotton
on Stack Overflow
See other posts from Stack Overflow
or by Richie Cotton
Published on 2010-03-19T11:56:50Z
Indexed on
2010/03/19
12:21 UTC
Read the original article
Hit count: 235
matlab
I'm writing a wrapper to a function that takes varargin as its inputs. I want to preserve the function signature in the wrapper, but nesting varargin
causes all the variable to be lumped together.
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
I need a way to unpack varargin
in the outer function, so that I have a list of individual variables. There is a really nasty way to do this by constructing a string of the names of the variables to pass the inner
, and calling eval
.
function outer2(varargin) %#ok<VANUS>
% My wrapper, second attempt
inputstr = '';
for i = 1:nargin
inputstr = [inputstr 'varargin{' num2str(i) '}']; %#ok<AGROW>
if i < nargin
inputstr = [inputstr ', ']; %#ok<AGROW>
end
end
eval(['inner(' inputstr ')']);
end
outer2('foo', 1:3, {}) % 3, as it should be
Can anyone think of a less hideous way of doing things, please?
© Stack Overflow or respective owner