I had a function in a file harmonic.m
in my matlab path with prototype:
function D = harmonic(A,B,C)
where, importantly, A
is expected to be a matrix of type double.
In version r2014a, apparently MATLAB has created a new builtin class method double.harmonic
. Thus when I call my function I get an error inside the wrong harmonic
. It doesn't help that my harmonic
is closer in the path list (which harmonic
reveals my path) because my first input is A
and harmonic(A,B,C)
seems to be equivalent to A.harmonic(B,C)
.
Is there any way to call my function directly? To ignore this double.harmonic
function? I know I can create a function handle from the path, but that's nasty. I'm looking for a more elegant solution or workaround. The most obvious being change my function's name, but then I'll feel bullied : - (.
Put your version of harmonic
into a folder @double
, and make sure that your folder @double
is above \toolbox\symbolic\symbolic\@double
on the path (this new double.harmonic
is from Symbolic Toolbox).
That will force your function to become a method of double
i.e. it will be double.harmonic
, rather than a generic function harmonic
. When deciding which thing to dispatch to, MATLAB will consider methods first, then generic functions later. Since your double.harmonic
and the other one are both methods, and yours is ahead on the path, yours will win. BAM - eat that, MATLAB!