passing 'varagin' and getting inputname() to work properly
3 次查看(过去 30 天)
显示 更早的评论
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'
0 个评论
采纳的回答
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 个评论
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!