问题:在Matlab中,如何检查函数句柄是否是特定函数或函数类型?
示例:让f1
成为函数句柄。如何检查f1
是否是内置的Matlab函数mean
?如何检查f1
是否为匿名函数?
我当前的解决方案:我目前解决此问题的方法是调用functions
函数。 functions
接受一个函数句柄作为输入,并返回一个包含输入函数句柄信息的结构,例如函数类型,路径,函数名等。它可以工作,但它不是一个理想的解决方案,因为引用{{ 3}}:
“注意事项MATLAB®仅提供functions
函数用于查询和调试。由于其行为可能会在后续版本中发生变化,因此您不应将其用于编程目的。”
答案 0 :(得分:11)
如何使用func2str?
如果这是一个内置函数,它应该只返回一个包含函数名的字符串;如果它是一个匿名函数,它应该返回匿名函数(包括@)。
h1 = @(x) x.^2;
h2 = @mean;
str1 = func2str(h1); %str1 = "@(x) x.^2"
str2 = func2str(h2); %str2 = "mean"
你也可以使用isequal比较两个函数句柄(ETA:这不能比较两个匿名函数,除非一个是作为另一个的副本创建的):
isequal(h1,@mean); % returns 0
isequal(h2,@mean); % returns 1