Неопределенная функция в MATLAB
Я использовал функцию dtw в последнем выпуске MATLAB, и хотел бы настроить несколько ее частей. Для начала я набрал:
edit dtw
Я сохранил полученный код в файл с именем dtw_Copy.m и изменил имя функции на dtw_Copy
также. Проходя код построчно с набором входных параметров x
а также y
вокруг линии 90:
[metric, varargin] = getmutexclopt({'absolute','euclidean','squared','symmkl'},'euclidean',varargin);
Я получаю сообщение об ошибке:
Неопределенная функция 'getmutexclopt' для входных аргументов типа 'cell'.
Я также получаю это сообщение об ошибке, если я не прохожу код построчно, а просто набираю dtw_Current(x,y)
после повторного тестирования набора входных параметров x
а также y
,
После запуска:
help 'getmutexclopt'
указано, что getmutexclopt
не найден. Я пробовал также:
edit 'getmutexclopt'
Но мне сказали, что currentDirectory / getmutexcloptm.m не существует.
Я старался:
which getmutexclopt
И мне сказали, что getmutexclopt
не найден.
Поиск в Интернете, я нашел ресурс, который казался прямым в устранении этой ошибки. Ресурс рекомендует убедиться, что набор инструментов установлен. Я не уверен, какой набор инструментов поддерживает функцию getmutexclopt
и поэтому я ввожу имя функции на сайт. В результате появляется сообщение: "Ваш поиск - getmutexclopt - не соответствует ни одному документу".
Ресурс также рекомендует проверить путь, используемый для доступа к функции. Я следовал инструкциям, чтобы сделать это, и когда я набрал:
which -all getmutexclopt
Я получил:
currentDirectory\matlab\toolbox\signal\signal\private\getmutexclopt.m % Private to signal
Кажется, это указывает на то, что функция находится в панели инструментов сигнала, которая является частной? Есть ли возможность еще бежать dtw_Current(x,y)
и / или запускать его содержимое построчно?
1 ответ
Да, это проблема, потому что функция getmutexclopt
это частная функция. Вам нужно будет сделать копию этой функции, если вы хотите безопасно вызвать ее из своей копии dtw
, Похоже, что основная функция (тип edit private/getmutexclopt.m
в окне командной строки), так что вы можете добавить его в качестве подфункции dtw_Copy
/dtw_Current
,
Смотрите также этот вопрос - добавление частных функций в путь поиска не допускается.