Ale*_*son 6 matlab overriding function name-clash name-conflict
我harmonic.m在matlab路径中的一个文件中有一个函数原型:
function D = harmonic(A,B,C)
Run Code Online (Sandbox Code Playgroud)
其中,重要的A是,预计将是double类型的矩阵.
在版本r2014a中,显然MATLAB已经创建了一个新的内置类方法double.harmonic.因此,当我调用我的函数时,我在错误中得到错误harmonic.我harmonic在路径列表中更接近(which harmonic显示我的路径)并没有帮助,因为我的第一个输入是A并且harmonic(A,B,C)似乎相当于A.harmonic(B,C).
有没有办法直接调用我的函数?要忽略这个double.harmonic功能?我知道我可以从路径创建一个函数句柄,但那很讨厌.我正在寻找更优雅的解决方案或解决方法.最明显的是改变我的功能名称,但后来我会感到被欺负: - (.
将您的版本harmonic放入文件夹中@double,并确保您的文件夹@double位于\toolbox\symbolic\symbolic\@double路径上方(这个新文件夹double.harmonic来自 Symbolic Toolbox)。
这将迫使您的函数成为一种方法,double而不是double.harmonic一个通用函数harmonic。在决定分派到哪个事物时,MATLAB 将首先考虑方法,然后再考虑泛型函数。既然你double.harmonic和对方都是方法,而你的方法在道上领先,那么你的方法就会胜出。BAM - 吃那个,MATLAB!