Неопределенная приватная функция в 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-файлу, у вас действительно есть два варианта.

  1. Сохраните измененную функцию в папке набора инструментов для обработки сигналов, и тогда она сможет увидеть private папка. Недостатком является то, что вы изменяете вашу установку MATLAB.

  2. Скопируйте необходимые файлы, которые находятся внутри private папка куда-то, что доступно из внешней функции (в основном где угодно, кроме private папка).

Ни один из них действительно не рекомендуется.

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