我在带有原型(prototype)的matlab路径中的harmonic.m文件中有一个函数:

function D = harmonic(A,B,C)

重要的是,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。在确定要分派(dispatch)给哪个对象时,MATLAB将首先考虑方法,然后再考虑泛型函数。由于您的double.harmonic和另一个都是这两种方法,而您的ojit_code在这条路上遥遥领先,因此您将获胜。 BAM-MATLAB,吃了!

09-25 18:21