tir*_*rth 17 validation matlab
如何测试/验证变量是matlab中的函数句柄?
它可能是这样的:
f=@(x)x+1
isFunctionHandle(f)
Run Code Online (Sandbox Code Playgroud)
在is*内置的功能似乎不支持这种类型的测试?谁都知道?非常感谢
Ego*_*gon 30
正确的方法确实是通过一种is*功能,即isa:
if isa(f, 'function_handle')
% f is a handle
else
% f is not a handle
end
Run Code Online (Sandbox Code Playgroud)
编辑:
为了完整性,我想指出使用class()工作来检查某些东西是否是一个函数句柄.然而,与之不同的是isa,这并不能很好地概括为MATLAB的其他方面,例如面向对象编程(OOP),它们对MATLAB的工作方式产生越来越大的影响(例如绘图功能,控制工具箱,识别工具箱,...... .严重依赖于OOP).
对于人们熟悉的OOP:isa还检查的超类型(父类)x的对象someClass,而strcmp(class(x), 'someClass')显然只是所需的确切类型检查.
对于那些不了解OOP的人:我建议使用isa(x, 'someClass')而不是strcmp(class(x), 'someClass')因为这是两者中最方便(和通常有用)的行为.