可能重复:
How do I retrieve the names of function parameters in matlab?
我正在寻找一种方法来获取传递给我的所有参数,或者期望我的函数。 args()命令似乎是理想的,但仅适用于程序。无论如何都是这样做的。
我之所以这样做是因为我可以用更少的行来检查。即通过编写一个检查然后执行所有args来检查所有输入是否为数字。因此,如果有一个好的选择,我愿意接受这些想法。
由于
答案 0 :(得分:3)
您正在寻找的是varargin
,它使您能够使用可变数量的输入参数。
答案 1 :(得分: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});