passing 'varagin' and getting inputname() to work properly

3 Ansichten (letzte 30 Tage)
Adam
Adam am 21 Dez. 2012
Is it possible to pass 'varargin' to an internal function and still get inputname() to return the original variable names?
e.g.
function struct = temp( varargin )
struct = parseInputs( varargin{1:end} )
end
function struct = parseInputs( varargin )
struct.name1 = inputname(1);
struct.name2 = inputname(2);
struct.name3 = inputname(3);
struct.name4 = inputname(4);
end
>> output = temp( a, b, c, d )
output =
name1: 'a'
name2: 'b'
name3: 'c'
name4: 'd'

Akzeptierte Antwort

Jonathan Sullivan
Jonathan Sullivan am 21 Dez. 2012
Bearbeitet: Jonathan Sullivan am 21 Dez. 2012
You could use "evalin"
In your example it would be something like:
function struct = temp( varargin )
struct = parseInputs( varargin{1:end} )
end
function struct = parseInputs( varargin )
for ii = 1:length(varargin)
struct.(['name' num2str(ii)]) = evalin('caller',['inputname(' num2str(ii) ');']);
end
end

Weitere Antworten (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by