如何在 Matlab 中测试变量是不是是函数句柄
Posted
技术标签:
【中文标题】如何在 Matlab 中测试变量是不是是函数句柄【英文标题】:how to test a variable is a function handle or not in Matlab如何在 Matlab 中测试变量是否是函数句柄 【发布时间】:2011-10-23 15:55:51 【问题描述】:如何测试/验证一个变量是matlab中的函数句柄?
可能是这样的:
f=@(x)x+1
isFunctionHandle(f)
is*
内置函数似乎不支持这些类型的测试?有人知道吗?非常感谢
【问题讨论】:
另见this question,它测试有效性(有代码支持它)以及作为函数句柄。 【参考方案1】:正确的方法确实是通过is*
函数,即isa
:
if isa(f, 'function_handle')
% f is a handle
else
% f is not a handle
end
编辑:
为了完整起见,我想指出,使用class()
可以检查某物是否是函数句柄。
然而,与isa
不同,这并不能很好地推广到 MATLAB 的其他方面,例如对 MATLAB 的工作方式产生越来越大影响的面向对象编程 (OOP)(例如绘图功能、控制工具箱、识别工具箱) , ... 很大程度上基于 OOP)。
对于熟悉 OOP 的人:isa
还会检查 x
对象的超类型(父类型)以查找 someClass
,而 strcmp(class(x), 'someClass')
显然只检查确切的类型。
对于不了解 OOP 的人:我建议使用 isa(x, 'someClass')
而不是 strcmp(class(x), 'someClass')
,因为这是两者中最方便(也是最常用)的行为。
【讨论】:
【参考方案2】:你可以使用class()
函数:
f = @(x)x+1
f =
@(x)x+1
>> class(f)
ans =
function_handle
(这是一个包含文本'function_handle'的字符串)
【讨论】:
以上是关于如何在 Matlab 中测试变量是不是是函数句柄的主要内容,如果未能解决你的问题,请参考以下文章