Возможные ошибки
1) Если не хватает лицензий для запуска на кластере функции my_function
из одноименного файла my_function.m
, то информация об ошибке находится в файле вида my_function.1/errors
. При этом, как правило, файл my_function.1/output
содержит MPIEXEC_CODE=123. Число свободных лицензий, кто и какие лицензии занимает, можно узнать, используя команду lmstat
.
Внимание. В настоящее время система запуска не контролирует число лицензий, доступность лицензий определяется только в начале счета.
2) ErrorMessage
содержит ошибки трансляции, например:
Undefined function or variable 'my_function'.
Имя или расширение файла, имя функции или переменной отсутствует или указано неверно. Имя может отсутствовать по причине случайного запуска из другого каталога.
Invalid function name 'j-cod'.
В именах файлов и функций не должно быть минуса («-«), только подчерк («_»).
Invalid file identifier. Use fopen to generate a valid file identifier.
Возможно, имя файла задано русскими буквами.
Внимание. В случае таких ошибок в файле my_function.1/errors
обычно содержится строка
[0]application called MPI_Abort(MPI_COMM_WORLD, 42) - process 0
Помните: имя файла должно совпадать с именем первой функции в файле, так как
(1) при запуске программы ищется файл с именем, указанным в команде запуска, и
(2) в нем выполняется, прежде всего, первая функция.
Если они не совпадают и при запуске указано имя функции (например, my_function
), то файл не будет найден и будет выдана ошибка вида:
Undefined function or variable 'my_function'.
Если они не совпадают и при запуске указано имя файла (например, my_code
), то выполнится первая функция файла независимо от ее имени.
Warning: File: my_code.m Line: 25 Column: 14 Function with duplicate name "my_code" cannot be called.
3) Если выполнение программы прервано принудительно, например, по истечению времени, то выходная информация отсутствует (т.е. файлы вывода вида Task1.out.mat
будут пусты). При этом состояние работы (поле State
) будет running
, в то время как состояния её задач (поля State
для Tasks(n)
, где n=1,2,...
) могут быть как running
, так и finished
, если часть копий программы успела финишировать до окончания заказанного времени.
my_function.1/errors
.4) В случае аварийного завершения работы программы в домашнем каталоге пользователя (~) могут оставаться файлы вида mpd. hosts.123456
и mpd.mf
…
Их следует периодически удалять вручную.
Неопределенная функция или переменная — MATLAB & Simulink
Issue
Во время работы вы можете столкнуться со следующим сообщением об ошибке или чем-то подобным. с функциями или переменными в MATLAB ® :
Неопределенная функция или переменная 'x'.
Эти ошибки обычно указывают на то, что MATLAB не может найти определенную переменную или программный файл MATLAB в текущем каталоге или на пути поиска.
Возможные решения
Проверка правильности написания имени функции или переменной
Одной из наиболее распространенных причин является неправильное написание имени функции или переменной.
Особенно с более длинными именами или именами, содержащими похожие символы (например,
буква l
и цифра один), легко ошибиться и
трудно их обнаружить.
Часто при неправильном написании функции MATLAB предлагаемое имя функции появляется в командном окне. Например, эта команда завершается ошибкой, потому что она включает заглавную букву в имя функции:
аккуммассив
Неопределенная функция или переменная 'accumArray'. Вы имеете в виду: >> accumarray
В этом случае нажмите Введите для выполнения предложенного или Esc , чтобы закрыть его.
Проверка соответствия входных данных синтаксису функции
Методы объекта обычно вызываются с использованием синтаксиса функции: например
. Как вариант, их можно назвать
используя запись через точку: например объект.метод(вводы)
. Один
распространенной ошибкой является смешивание этих синтаксисов. Например, вы можете вызвать метод
с использованием синтаксиса функции, но для предоставления входных данных в соответствии с синтаксисом записи через точку и
не использовать объект в качестве входных данных: например, метод(входы)
. Чтобы избежать этого, при вызове объекта
метод, убедитесь, что вы сначала указали объект, либо через первый вход
синтаксиса функции или через первый идентификатор записи через точку.
Убедитесь, что имя функции соответствует имени файла
Когда вы пишете функцию, вы устанавливаете ее имя при написании ее функции
линия определения. Это имя всегда должно совпадать с именем сохраняемого файла.
к. Например, если вы создаете функцию с именем curveplot
,
function curveplot(xVal, yVal) - код программы -
, тогда вы должны назвать файл, содержащий эту функцию кривая.м
. Если вы создаете файл pcode
для функции,
затем назовите этот файл curveplot.p
. В случае конфликтных
функции и имена файлов, имя файла переопределяет имя, данное функции.
В этом примере, если вы сохраните функцию curveplot
в файл
с именем curveplotfunction. m
, затем пытается вызвать
функция, использующая имя функции, завершится ошибкой:
кривая Неопределенная функция или переменная 'curveplot'.
Если вы столкнулись с этой проблемой, измените либо имя функции, либо имя файла, чтобы что они одинаковые.
Чтобы найти файл, который определяет эту функцию, используйте MATLAB Утилита Find Files выглядит следующим образом:
На вкладке Домашний в Файл раздел, нажмите Найти файлы .
Под введите
*.м
Под введите имя функции.
Нажмите кнопку Найти
Убедитесь, что необходимый набор инструментов установлен и правильная версия
Если вы не можете использовать встроенную функцию из MATLAB или его наборов инструментов, убедитесь, что функция установлена и правильная версия.
Если вы не знаете, какой набор инструментов содержит нужную вам функцию, найдите
документацию по функциям по адресу https://www.mathworks.com/help
. Имя набора инструментов
появляется в верхней части страницы с описанием функций. В качестве альтернативы, для шагов к
определить наборы инструментов, от которых зависит функция, см. раздел Определение зависимостей программы.
Как только вы узнаете, к какому набору инструментов относится функция, используйте функцию ver
, чтобы узнать, какой
наборы инструментов устанавливаются в системе, из которой вы запускаете MATLAB. 9Функция 0017 ver отображает список всех
в настоящее время установлены продукты MathWorks ver
, тогда набор инструментов установлен. если ты
не может, вам нужно установить его, чтобы использовать его. За помощью в установке
Продукты MathWorks см. в разделе Установка диспетчера лицензий на сервере лицензий.
Проверка пути, используемого для доступа к функции Toolbox
Путь поиска MATLAB является подмножеством всех папок в файловой системе. MATLAB использует путь поиска для эффективного поиска файлов, используемых с продуктами MathWorks. Для получения дополнительной информации смотрите, Что такое Путь поиска MATLAB?.
Если функция, которую вы пытаетесь использовать, является частью набора инструментов, проверьте
что набор инструментов доступен с использованием версии
.
Поскольку MATLAB хранит информацию о наборе инструментов в кэш-файле, вам необходимо сначала обновите этот кеш, а затем сбросьте путь.
На вкладке Главная в Окружающая среда раздел, нажмите Настройки .
Появится диалоговое окно настроек.
На странице > выберите Update Toolbox Path Кэш .
На вкладке Главная в Окружающая среда раздел, выберите .
Откроется диалоговое окно «Установить путь».
Выберите По умолчанию .
Откроется небольшое диалоговое окно с предупреждением о том, что вы потеряете текущий путь настройки, если вы продолжите. Выберите
Запустите ver
, чтобы проверить, установлен ли набор инструментов. Если бы не ты
возможно, потребуется переустановить этот набор инструментов, чтобы использовать эту функцию. За дополнительной информацией
об установке набора инструментов см. Как установить дополнительные наборы инструментов в существующую установку
МАТЛАБ.
Когда ver
отобразит ваш набор инструментов, выполните следующую команду, чтобы
посмотрите, сможете ли вы найти функцию:
, которая -все <имя_функции>
заменяет
с названием функции. Если MATLAB находит ваш файл функции, он предоставляет вам путь к нему. Ты
можно добавить этот файл в путь, используя функцию <имя_функции>
addpath
. Если
это не так, убедитесь, что необходимый набор инструментов установлен и что это
правильная версия.
Подтвердите, что лицензия активна
Если вы не можете использовать встроенную функцию из набора инструментов MATLAB и подтвердили, что набор инструментов установлен, сделайте
Убедитесь, что у вас есть действующая лицензия на этот набор инструментов. Используйте лицензию
для отображения текущих активных лицензий.
Дополнительные сведения об управлении лицензиями см. в разделе Управление лицензиями.
Неопределенная функция и обработка переменных — MATLAB & Simulink
Неопределенная функция и обработка переменных
Описание
Укажите поведение неопределенных функций и
переменные в файле исходного кода C модели
который содержит диаграммы Stateflow ® или C Caller,
Функция C, MATLAB
Функция или система MATLAB
блоки. Если вы объявляете функцию или переменную в
заголовочный файл, но не реализовывать его в
исходный код, Simulink ® ведет себя в соответствии с этой настройкой. В зависимости от настройки Simulink берет функции и переменные из
файл заголовка и создает функции-заглушки и
переменные равны нулю, если они не определены в
файл исходного кода C. Если ваш код не
совместимый с настольной симуляцией, или вы хотите
ввести интерфейс во внешний код с помощью
соответствующие заголовочные файлы, установите для этого параметра значение Использовать интерфейс
только
.
Категория: Цель моделирования
Настройки
По умолчанию: Отфильтровать
-
Выбросить error
Вернуть ошибку, если функция или переменная в исходный код C не определен. Simulink не генерирует функции-заглушки или переменные равны нулю, но показывает функции и переменные в Порт Спецификация таблица С Блокировка вызывающего абонента.
-
Отфильтровать
Отфильтровать неопределенные функции и переменные в исходном коде C. Simulink не генерирует заглушку автоматически функции или переменные равны нулю, а Спецификация порта таблица блок C Caller не отображается эти функции и переменные.
Если у вас есть неопределенные функции или переменные в исходном коде C и модель, которая содержит Диаграмма Stateflow, MATLAB Функция или система MATLAB блок вызывает эти функции или переменные, Simulink возвращает ошибку. Если пользовательский код в блоках в вашей модели есть undefined функции или переменные, Simulink отображает предупреждение.
-
Не обнаружить
Не обнаруживать неопределенные функции или переменные в исходном коде. Simulink не генерирует заглушку автоматически функции или переменные равны нулю, но показывает функции и переменные в порту Спецификация таблица С Блокировка вызывающего абонента.
-
Использовать интерфейс только
Обнаружить неопределенные функции и переменные в исходный код Си. Simulink генерирует функции-заглушки и равные нулю, делает их видимыми в модели и позволяет вызывать их из Диаграммы Stateflow и C функция, функция MATLAB, и блоки MATLAB System.
Информация командной строки
Параметр: CustomCodeUndefinedFunction |
Значение: 'ВыбросОшибки' | 'Отфильтровать' | 'Не обнаруживать' | 'UseInterfaceOnly' |
По умолчанию: 'Отфильтровать' |
Рекомендуемые настройки
Применение | Установка |
---|---|
DEVUGGGGED | 90368 9028 |
. |