检查我的函数是否覆盖了另一个函数

Pho*_*non 5 matlab

我试图在运行时找出我的函数是否覆盖了另一个函数.

请考虑以下假设情景.我正在实现一个函数调用freqz,如果安装了信号处理工具箱,它可能存在于MATLAB中.如果确实已经作为工具箱的一部分存在,我想在我自己的内部调用它并返回其结果.如果它不存在,我想我自己的功能做自己的处理.

这是一个伪代码示例

function foo(args)
    if overrides_another_function(foo)
        func = find_overriden_function(foo);
        result = func(args);
    else
        result = my_own_processing(args);

    return result;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当有人打电话时foo,他们会得到他们期望的版本,如果foo其他地方不可用,则会依赖我自己的实现.MATLAB能够做这样的事吗?

我尝试过的:

  • 始终exist在内部调用foo返回2(函数存在),因为一旦我们第一次进入函数,就会认为函数被声明.
  • exist从m文件中的函数外部运行是无效的MATLAB语法.
  • 我还没有找到一种方法来列出具有给定名称的所有函数.如果这是可能实现的,这将让我有一半(我至少知道存在,但仍然需要弄清楚如何访问被覆盖的功能).

Pie*_*r21 0

只是两个建议,不是真正的答案。

也许可以通过名称(which foo)查找脚本http://www.mathworks.nl/help/matlab/ref/which.html ,但这也可能指向您已经所在的 foo 。

否则,您必须在完整路径中搜索 foo 的出现。