Звучит так, будто у вас есть основная функция, и из этой функции вы хотите вызвать функцию LogParams
, чтобы получить список имен переменных, переданных в основную функцию. Вот один из способов реализации вашей функции LogParams
:
function names = LogParams
names = evalin('caller','arrayfun(@inputname,1:nargin,''UniformOutput'',0)');
end
Выходные данные, возвращаемые LogParams
, будут массивом ячеек, содержащим имена переменных, переданных функции, которая вызывает LogParams
. Приведенное выше решение использует следующие функции:
- EVALIN : для вычисления выражения в рабочей области вызывающей функции.
- ARRAYFUN : как альтернатива циклу for.
- NARGIN : чтобы получить количество аргументов, переданных функции.
- INPUTNAME : получить имя входной переменной.
В качестве иллюстрации работы LogParams
создайте следующую функцию, которая ее вызывает:
function main_function(a,b,varargin)
disp(LogParams);
end
и теперь вызывайте его с несколькими входами (при условии, что переменные x
, y
и z
определены в рабочей области):
>> main_function(x,y)
'x' 'y'
>> main_function(x,y,z)
'x' 'y' 'z'
>> main_function(x,y,z,z,z,z)
'x' 'y' 'z' 'z' 'z' 'z'