如何在matlab中覆盖帮助函数?

4
我注意到当一个函数被重载时,help fcn并没有被更新。我创建了一个自定义函数,使用与内置函数相同的名称。尝试:
which fcn

生成了right\function.m,但当我使用help函数时。
help fcn

我得到了内置函数的帮助。然而,如果我输入以下内容:
help fcn.m

我得到了正确的帮助。这可能会导致混淆,让人感到困惑哪个文件是被使用的,因此这是不明确和令人不安的。这就是我为什么想知道:是否有可能覆盖帮助信息呢?
我知道很多人不建议在Matlab中进行覆盖,但有时候可能值得尝试。对于这种情况,这意味着我不需要更改所有旧代码中使用该函数的部分,同时拥有太多版本的函数也不好(mycdfplot已经被占用,有些人也可能有本地版本)。
1个回答

1
短答案是:不行
(抱歉) 稍微解释一下: 如果您重载自己的函数,可以通过调整函数优先级顺序和路径顺序来强制帮助指向特定函数。但对于Matlab内置函数,它们始终优先于您的自定义函数。
唯一让帮助文档到达您的自定义函数的方法就是按照您所描述的方式,通过指定.m

来自Matlab (2013b)帮助文档:

注意:当多个程序具有相同的名称时,帮助命令通过应用函数优先级顺序中描述的规则来确定要显示哪个帮助文本。 但是,如果一个程序与MathWorks函数同名,则上下文菜单中的“选择帮助”选项始终会显示MathWorks函数的文档。


这似乎有点尴尬,不是吗?我怀疑这种行为对于帮助正常工作并不是必要的。我想Matlab这样做是出于最好的意图,但这似乎产生了错误的影响。我这样做的原因是大多数统计工具箱许可证大部分时间都被占用,而且cdfplot缺少像r.之类的样式参数。我的意思是,自己做一个累积分布函数有多难呢?无论如何,回答很好,谢谢!+1 - patrik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接