Неопределенная приватная функция в MATLAB
Этот вопрос аналогичен тому, что я задавал в предыдущем посте Stackru ( неопределенная функция в MATLAB).
По сути, я использую функцию dtw в последнем выпуске MATLAB и хотел бы настроить ее несколько частей. Для начала я набрал:
edit dtw
Я сохранил полученный код в файл с именем dtw_Copy.m и изменил имя функции на dtw_Copy
также. Проходя код построчно с набором входных параметров x
а также y
Я получаю сообщение об ошибке:
Undefined function 'dtwmex' for input arguments of type 'double'.
Я также получаю это сообщение об ошибке, если я не прохожу код построчно, а просто набираю dtw_Current(x,y)
после повторного тестирования набора входных параметров x
а также y
,
После запуска:
help 'dtwmex'
указано, что dtwmex
не найден. Я пробовал также:
edit 'dtwmex'
Но мне сказали, что currentDirectory / dtwmex.m не существует.
Поиск в Интернете, я нашел ресурс, который казался прямым в устранении этой ошибки. Ресурс рекомендует убедиться, что набор инструментов установлен. Я не уверен, какой набор инструментов поддерживает функцию dtwmex
и поэтому я ввожу имя функции на сайт. Это приводит к сообщению, что: "Ваш поиск - dtwmex - не соответствует ни одному документу".
Ресурс также рекомендует проверить путь, используемый для доступа к функции. Я следовал инструкциям, чтобы сделать это, и когда я набрал:
which -all dtwmex
Я получил:
currentDirectory\matlab\toolbox\signal\signal\private\dtwmex.mexw64 % Private to signal
Кажется, это указывает на то, что функция находится в панели инструментов сигнала, которая является частной? Есть ли возможность еще бежать dtw_Current(x,y)
и / или запускать его содержимое построчно?
Я попытался открыть файл dtwmex.mexw64, чтобы добавить его содержимое в качестве подпрограммы (как было решение в моем предыдущем вопросе), но мне сказали, что его нельзя открыть.
1 ответ
Эта функция представляет собой скомпилированный mex-файл, который находится в private
папка панели инструментов. private
папки являются специальными в MATLAB, и их содержимое доступно только из файлов в родительском каталоге. В вашем случае это будет означать, что только функции, определенные в toolbox/signal/signal
Папка может найти / вызвать эту функцию. Если вы хотите получить доступ к этому mex-файлу, у вас действительно есть два варианта.
Сохраните измененную функцию в папке набора инструментов для обработки сигналов, и тогда она сможет увидеть
private
папка. Недостатком является то, что вы изменяете вашу установку MATLAB.Скопируйте необходимые файлы, которые находятся внутри
private
папка куда-то, что доступно из внешней функции (в основном где угодно, кромеprivate
папка).
Ни один из них действительно не рекомендуется.