passing 'varagin' and getting inputname() to work properly
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Jonathan Sullivan
le 21 Déc 2012
Modifié(e) : Jonathan Sullivan
le 21 Déc 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
0 commentaires
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!