可能重复:
如何在 matlab 中检索函数参数的名称?
我正在寻找一种方法来获取传递给或期望我的函数的所有参数。args() 命令似乎很理想,但仅适用于过程。有没有这样做。
我想这样做的原因是我可以检查更少的行。即通过编写一项检查然后对所有参数执行来检查所有输入是否为数字。因此,如果有一个好的替代方案,我对想法持开放态度。
谢谢
可能重复:
如何在 matlab 中检索函数参数的名称?
我正在寻找一种方法来获取传递给或期望我的函数的所有参数。args() 命令似乎很理想,但仅适用于过程。有没有这样做。
我想这样做的原因是我可以检查更少的行。即通过编写一项检查然后对所有参数执行来检查所有输入是否为数字。因此,如果有一个好的替代方案,我对想法持开放态度。
谢谢
您正在寻找的是varargin
它使您能够使用可变数量的输入参数。
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});