exponenta event banner

Устранение ошибки: неопределенная функция или переменная

Проблема

При работе с функциями или переменными в MATLAB ® может появиться следующее сообщение об ошибке или нечто подобное:

Undefined function or variable 'x'.

Эти ошибки обычно указывают на то, что MATLAB не может найти определенную переменную или файл программы MATLAB в текущем каталоге или в пути поиска.

Возможные решения

Проверка правописания функции или имени переменной

Одной из наиболее распространенных причин является неправильное написание имени функции или переменной. Особенно с более длинными именами или именами, содержащими подобные символы (например, буква l и номер один), легко ошибаться и трудно их обнаружить.

Часто при неправильном написании функции MATLAB в окне команд появляется предлагаемое имя функции. Например, эта команда завершается неуспешно, поскольку она включает прописную букву в имя функции:

accumArray
Undefined function or variable 'accumArray'.
 
Did you mean:
>> accumarray

В этом случае нажмите Enter, чтобы выполнить предложенную команду, или Esc, чтобы отменить ее.

Проверка соответствия входных данных синтаксису функции

Объектные методы обычно вызываются с использованием синтаксиса функции: например, method(object,inputs). В качестве альтернативы их можно вызвать с помощью точечной нотации: например, object.method(inputs). Одной из распространенных ошибок является смешение этих синтаксисов. Например, можно вызвать метод, используя синтаксис функции, но предоставить входные данные, следующие за синтаксисом точечной нотации, и оставить объект в качестве входного: например, method(inputs). Чтобы избежать этого, при вызове метода объекта необходимо сначала указать объект либо через первый ввод синтаксиса функции, либо через первый идентификатор точечной нотации.

Убедитесь, что имя функции соответствует имени файла

При записи функции ее имя устанавливается при записи строки определения функции. Это имя всегда должно совпадать с именем сохраняемого файла. Например, при создании функции с именем curveplot,

function curveplot(xVal, yVal)
     - program code -

тогда вы должны назвать файл, содержащий эту функцию curveplot.m. При создании pcode файл для функции, затем имя этого файла curveplot.p. В случае конфликтующих функций и имен файлов имя файла переопределяет имя функции. В этом примере при сохранении curveplot в файл с именем curveplotfunction.m, то попытки вызова функции с использованием имени функции завершатся неудачей:

curveplot
Undefined function or variable 'curveplot'.

При возникновении этой проблемы измените либо имя функции, либо имя файла таким образом, чтобы они совпадали.

Чтобы найти файл, определяющий эту функцию, используйте утилиту MATLAB Find Files следующим образом:

  1. На вкладке Главная (Home) в разделе Файл (File) щелкните Найти файлы (Find Files).

  2. В разделе «Найти файлы с именем» введите *.m

  3. В разделе Найти файлы, содержащие текст (Find files containing text) введите имя функции.

  4. Нажмите кнопку «Найти»

Убедитесь, что необходимая панель инструментов установлена и имеет правильную версию

Если невозможно использовать встроенную функцию из MATLAB или ее панелей инструментов, убедитесь, что функция установлена и является правильной версией.

Если неизвестно, какая панель инструментов содержит нужную функцию, выполните поиск документации по функции по адресу https://www.mathworks.com/help. Имя панели инструментов отображается в верхней части страницы ссылки на функцию. Кроме того, инструкции по определению панелей инструментов, от которых зависит функция, см. в разделе Определение зависимостей программы.

Как только вы узнаете, какой панели инструментов принадлежит функция, используйте ver позволяет просмотреть, какие панели инструментов установлены в системе, из которой выполняется MATLAB. ver отображает список всех установленных в данный момент продуктов MathWorks ®. Если вы можете найти нужную панель инструментов в выходных данных, отображаемых verпосле чего панель инструментов устанавливается. Если вы не можете, необходимо установить его, чтобы использовать. Если вы не можете, необходимо установить его, чтобы использовать. Дополнительные сведения об установке продуктов MathWorks см. в разделе Установка и лицензирование.

Проверка пути, используемого для доступа к панели инструментов функции

Совет

Если у вас есть пользовательский путь к файлу, этот шаг удалит его.

Путь поиска MATLAB является подмножеством всех папок в файловой системе. MATLAB использует путь поиска для эффективного поиска файлов, используемых с продуктами MathWorks. Дополнительные сведения см. в разделе Что такое путь поиска MATLAB?.

Если функция, которую вы пытаетесь использовать, является частью панели инструментов, убедитесь, что панель инструментов доступна с помощью ver.

Поскольку MATLAB хранит данные панели инструментов в файле кэша, необходимо сначала обновить этот кэш, а затем сбросить путь.

  1. На вкладке Главная (Home) в разделе Среда (Environment) щелкните Настройки (Preferences).

    Откроется диалоговое окно Настройка (Preference).

  2. На странице MATLAB > General выберите Update Toolbox Path Cache.

  3. На вкладке Главная (Home) в разделе Среда (Environment) выберите Задать путь (Set Path).

    Откроется диалоговое окно Задать путь (Set Path).

  4. Выберите значение По умолчанию.

    Откроется небольшое диалоговое окно с предупреждением о том, что при продолжении настройки текущего пути будут потеряны. Выберите Да, если вы решите продолжить.

Управляемый ver чтобы проверить, установлена ли панель инструментов. В противном случае для использования этой функции может потребоваться переустановка панели инструментов. Дополнительные сведения об установке панели инструментов см. в разделе Как установить дополнительные панели инструментов в существующую установку MATLAB.

Однажды ver показывает панель инструментов, выполните следующую команду, чтобы проверить, можно ли найти функцию:

which -all <functionname>

замена <functionname> с именем функции. Если MATLAB находит файл функции, он предоставляет вам путь к нему. Этот файл можно добавить в путь с помощью addpath функция. Если нет, убедитесь, что установлена необходимая панель инструментов и что она является правильной версией.

Подтвердить, что лицензия активна

Если вы не можете использовать встроенную функцию из панели инструментов MATLAB и подтвердили, что панель инструментов установлена, убедитесь, что у вас есть активная лицензия на эту панель. Использовать license для отображения активных лицензий. Дополнительные сведения о поддержке управления лицензиями см. в разделе Управление лицензиями.