新的MATLAB版本使用类方法覆盖我的函数。我还可以打电话给我吗?

时间:2014-05-02 19:51:44

标签: matlab function override name-clash name-conflict

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

function D = harmonic(A,B,C)

其中,重要的是,A应该是double类型的矩阵。

在版本r2014a中,显然MATLAB已经创建了一个新的内置类方法double.harmonic。因此,当我调用我的函数时,我在错误的harmonic内得到错误。我的harmonic离路径列表更近(which harmonic显示我的路径),因为我的第一个输入是Aharmonic(A,B,C)似乎是等价的,这无济于事到A.harmonic(B,C)

有没有办法直接调用我的函数?要忽略此double.harmonic函数?我知道我可以从路径创建一个函数句柄,但那很讨厌。我正在寻找更优雅的解决方案或解决方法。最明显的是改变我的功能名称,但后来我会感到被欺负: - (。

1 个答案:

答案 0 :(得分:2)

将您的harmonic版本放入文件夹@double,并确保您的文件夹@double位于路径上\toolbox\symbolic\symbolic\@double之上(此新double.harmonic来自Symbolic Toolbox)。

这将强制您的函数成为double方法,即它将是double.harmonic,而不是通用函数harmonic。在决定分发哪个东西时,MATLAB将首先考虑方法,然后考虑通用函数。由于你的double.harmonic和另一个都是方法,而你的方法在路上领先,你的将获胜。 BAM - 吃那个,MATLAB!