Новая версия 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 и другой - оба метода, и ваш впереди на пути, ваш победит. БАМ - съешь это, МАТЛАБ!

Другие вопросы по тегам