5
我想为所有传递给MATLAB函数的输入参数编写一个通用记录函数。是否可以轻松地将所有输入参数传递给另一个函数,而无需单独命名参数?在日志功能中,我当然可以在for循环中使用inputname(i)
来获取参数名称。我宁愿不必在主函数中执行这个逻辑。那么,有没有办法像LogParams(allInputParams)
这样做?在MATLAB中记录函数参数
我想为所有传递给MATLAB函数的输入参数编写一个通用记录函数。是否可以轻松地将所有输入参数传递给另一个函数,而无需单独命名参数?在日志功能中,我当然可以在for循环中使用inputname(i)
来获取参数名称。我宁愿不必在主函数中执行这个逻辑。那么,有没有办法像LogParams(allInputParams)
这样做?在MATLAB中记录函数参数
这听起来像你有一个主要功能,并从该功能,你想调用函数LogParams
获得传递给主函数的变量的名称列表。这里是你可以实现你的功能LogParams
一个办法:
function names = LogParams
names = evalin('caller','arrayfun(@inputname,1:nargin,''UniformOutput'',0)');
end
输出从LogParams
返回将包含传递给调用LogParams
函数的变量名的单元阵列。上述解决方案使用以下功能:
作为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'
非常整齐! ..........(点到垫15个字符) – 2010-01-12 06:44:38
谢谢。这有帮助。 – 2010-01-12 14:58:54
+1对呼叫功能的影响最小。 – Marc 2010-01-13 15:19:06