【发布时间】:2013-08-12 09:30:18
【问题描述】:
问题:在Matlab中,如何检查函数句柄是否为特定函数或函数类型?
示例:让f1 成为函数句柄。如何检查f1 是否是内置的Matlab 函数mean?如何检查f1 是否为匿名函数?
我目前的解决方案:我目前对这个问题的解决方案是调用functions 函数。 functions 接受函数句柄作为输入,并返回包含有关输入函数句柄信息的结构,例如函数类型、路径、函数名称等。它可以工作,但它不是一个理想的解决方案,因为引用 official documentation:
“注意 MATLAB® 提供 functions 函数仅用于查询和调试目的。由于其行为在后续版本中可能会发生变化,因此您不应依赖它进行编程。”
【问题讨论】:
-
这是一个抽象的有效问题,但我想知道你为什么需要这样做?你试图做的问题背后的更大的事情是什么?
-
@SamRoberts 在接受
f1作为其输入之一的函数中,如果f1是许多公认的函数之一,例如样本意思等。但是,我也希望该功能适用于其他类型的功能f1,这些快捷方式是不可能的。这有意义吗? -
Colin,你可能想通读这篇文章,特别是 MathWorks 的 Loren Shure 的两个 cmets(一个引用,一个在实际 cmets 中):undocumentedmatlab.com/blog/… 这表明一些内置函数,如因为
cellfun面临与您相同的问题,并通过在同一位置允许函数句柄和一组有限的字符串参数来解决该问题,从而为预设字符串提供替代且更快的代码路径。只是一个想法。 -
@SamRoberts 这是一本非常有趣的书,谢谢 - 它确实强化了您之前关于重复函数名称的观点。很高兴看到我不是唯一一个试图处理这个问题的人:-)