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

조회 수: 3 (최근 30일)
Adam
Adam 2012년 12월 21일
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'

채택된 답변

Jonathan Sullivan
Jonathan Sullivan 2012년 12월 21일
편집: Jonathan Sullivan 2012년 12월 21일
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

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by