如何在Matlab函数验证器中接受多个参数类型?

如何在Matlab函数验证器中接受多个参数类型?,matlab,function,validation,Matlab,Function,Validation,我有一个函数,比如说myFunc,它有一个参数,比如说funcHandleArg,它应该是一个函数句柄实例。但是,此参数不限于一个函数句柄,实际上可能是一组函数句柄。由于Matlab不接受函数句柄的非标量数组[func\u handle1,func\u handle2],因此我必须将此参数作为函数句柄的单元格数组传递s{func\u handle1,func\u handle2} 现在,我的问题是,如何确保funcHandleArg=func_handle1和funcHandleArg={fun

我有一个函数,比如说
myFunc
,它有一个参数,比如说
funcHandleArg
,它应该是一个
函数句柄
实例。但是,此参数不限于一个
函数句柄
,实际上可能是一组
函数句柄
。由于Matlab不接受函数句柄的非标量数组
[func\u handle1,func\u handle2]
,因此我必须将此参数作为
函数句柄的单元格数组传递
s
{func\u handle1,func\u handle2}

现在,我的问题是,如何确保
funcHandleArg=func_handle1
funcHandleArg={func_handle1,func_handle2}
都被验证并接受为输入参数。总而言之,我想要这样的东西:

function myFunc(fcnOrFcns, otherArgs)
arguments
    fcnOrFcns {isOneOrMoreFunction}
    otherArgs
end
celldisp({fcnOrFcns, otherArgs});
end

function isOneOrMoreFunction(f)
isFcn = @(f) isa(f, 'function_handle');
assert(isFcn(f) || (iscell(f) && all(cellfun(isFcn, f))));
end
function output=myFunc(funcHandleArg,someOtherStuff)
论据
funcHandleArg函数_handle“和函数_handles的单元格”
其他的东西其他的东西
结束
输出=someFunctionOf(funcHandleArg,someOtherStuff)
结束

您可以编写如下简单的验证函数:

function myFunc(fcnOrFcns, otherArgs)
arguments
    fcnOrFcns {isOneOrMoreFunction}
    otherArgs
end
celldisp({fcnOrFcns, otherArgs});
end

function isOneOrMoreFunction(f)
isFcn = @(f) isa(f, 'function_handle');
assert(isFcn(f) || (iscell(f) && all(cellfun(isFcn, f))));
end

您可以使用
iscell
isa(funcHandleArg,'function\u handle')
来确定变量的类型。我明白您的观点,定义一些验证器函数,我可以验证我的参数是
单元格还是
函数\u handle
。但是,这并不能解决我的问题,因为:1)我没有检查我的参数是否是
函数的单元格\u handle
s 2)我在
参数
块中没有简单的一行。谢谢,这确实回答了我的问题。我希望有一个更简单的一行程序,但我想Matlab语法不允许这样。