Новая версия MATLAB переопределяет мою функцию методом класса. Могу ли я по-прежнему вызывать свою функцию?
У меня была функция в файле harmonic.m
в моем пути к Matlab с прототипом:
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
функционировать? Я знаю, что могу создать дескриптор функции из пути, но это противно. Я ищу более элегантное решение или обходной путь. Наиболее очевидным является изменение имени моей функции, но тогда я буду чувствовать себя запуганным: - (.
1 ответ
Поставь свою версию harmonic
в папку @double
и убедитесь, что ваша папка @double
выше \toolbox\symbolic\symbolic\@double
на пути (это новый double.harmonic
из Symbolic Toolbox).
Это заставит вашу функцию стать методом double
то есть это будет double.harmonic
, а не общая функция harmonic
, При принятии решения о том, к какому объекту отправлять, MATLAB сначала будет учитывать методы, а затем - общие функции. Так как ваш double.harmonic
и другой - оба метода, и ваш впереди на пути, ваш победит. БАМ - съешь это, МАТЛАБ!