2012-10-05 94 views
1

可能重复:
How do I retrieve the names of function parameters in matlab?如何获得函数参数matlab的

我正在寻找一种方式来获得传递给所有的参数,或者期望我的功能。 args()命令似乎是理想的,但仅适用于过程。有没有这样做。

我的理由我想这样做是因为我可以做更少的行检查。即检查所有输入是数字写入一个检查然后执行所有参数。所以如果有一个很好的选择,我会接受想法。

感谢

回答

3

您可以使用varargin作为petrichor提到的。 varargin是细胞,所以你可以在一行中使用cellfun轻松地执行所有参数的验证:

function c = test(varargin) 
cellfun(@(arg)validateattributes(arg, {'numeric'}, {'integer'}), varargin); 

上面的代码运行validateattributes所有功能参数。在另一方面,如果你想命名的变量,你仍然可以将它们组合成细胞,并运行特定的测试,上面:

function c = test(i1, i2, d1, d2) 

% validate integer arguments 
cellfun(@(arg)validateattributes(arg, {'numeric'}, {'integer'}), {i1, i2}); 

% validate double arguments 
cellfun(@(arg)validateattributes(arg, {'double'}, {'positive'}), {d1, d2}); 
3

你在找什么是varargin使你的输入参数数量可变的工作。

+0

我真的不希望可变数量的参数虽然。而且大部分代码都希望使用命名变量来使其更清晰。我只想要一种方式来完成我的断言,而不必重复代码。 – wookie1