mxArray
Можно вызвать собственный C или программы C++ из командной строки MATLAB, как будто они были встроенными функциями. Эти программы называются MEX-функциями, и имя функции является именем файла MEX. MEX-функции не подходят для всех приложений. MATLAB является средой высокой производительности, специальность которой устраняет длительное, низкоуровневое программирование на скомпилированных языках. В общем случае сделайте свое программирование в MATLAB. Не используйте MEX-функции, если ваше приложение не требует его.
Чтобы создать MEX-функцию, запишите вашему использованию программ API MATLAB. Функции в этих библиотеках упрощают передачу данных между MEX-функциями и рабочей областью. Чтобы выбрать MATLAB API, рассмотрите следующее.
MathWorks рекомендует, чтобы вы создали MEX-функции, использующие современные функции C++, как задано в MATLAB Data API. Для получения дополнительной информации см. Приложения C++ MEX.
Если ваши MEX-функции должны запуститься в MATLAB R2017b или ранее, или если вы предпочитаете работать на языке C, то используйте функции в Матричном API C и API MEX C. Эти API используют MATLAB mxArray
структура данных. Функции и темы на этой странице основаны на mxArray
.
Примечание
Выберите функции или из Матричного API C или из MATLAB Data API; вы не можете смешать функции от этих API.
Встройте свой исходный файл в исполняемую программу с помощью mex
функция. Можно также совместно использовать файл MEX с другими пользователями MATLAB.
Для получения информации о записи S-функций см. свою документацию Simulink®.
Чтобы вызвать MEX-функцию, которую кто-то еще создал, смотрите Функции файла MEX.
Если вы имеете программу C/C++ и хотите вызвать функции MATLAB из программы, то используйте одни из API механизма.
Если вы хотите считать и записать данные MATLAB из программ C/C++, то используйте API MATLAB C, чтобы Считать Данные о MAT-файле.
mexFunction | Точка входа к функции MEX C/C++ создается с Матричным API C |
mexFunctionName | Имя текущей MEX-функции |
mexAtExit | Функция регистра, чтобы вызвать, когда MEX-функция очищается или MATLAB, завершает работу |
mexCallMATLAB | Вызовите функцию MATLAB, пользовательскую функцию или MEX-функцию |
mexCallMATLABWithTrap | Вызовите функцию MATLAB, пользовательскую функцию или файл MEX и получите информацию об ошибке |
mexEvalString | Выполните команду MATLAB в рабочей области вызывающей стороны |
mexEvalStringWithTrap | Выполните команду MATLAB в рабочей области вызывающей стороны и получите информацию об ошибке |
mexGetVariable | Копия переменной из заданной рабочей области |
mexGetVariablePtr | Указатель только для чтения на переменную из другой рабочей области |
mexPutVariable | Массив от MEX-функции в заданную рабочую область |
mexGet | Значение заданного графического свойства |
mexSet | Установите значение заданного графического свойства |
mexPrintf | ANSI C программа вывода PRINTF-стиля |
mexErrMsgIdAndTxt | Отобразите сообщение об ошибке с идентификатором и возвратитесь к подсказке MATLAB |
mexWarnMsgIdAndTxt | Предупреждающее сообщение с идентификатором |
mexIsLocked | Определите, заблокирован ли файл MEX |
mexLock | Предотвратите очищающийся файл MEX из памяти |
mexUnlock | Позвольте очищать файл MEX из памяти |
mexMakeArrayPersistent | Заставьте массив сохраниться после того, как файл MEX завершится |
mexMakeMemoryPersistent | Сделайте память выделенной MATLAB, сохраняются после того, как MEX-функция завершается |
Создание исходного файла MEX на C
В этом примере показано, как создать arrayProduct
C MEX-функция создается с Матричным API C.
Таблицы примеров исходного кода MEX-функции
Ссылки на исходный код для примеров MEX-функции.
Используя mxArray
в файлах MEX.
Правила для управления mxArray
память.
Создайте MEX-функции C++ с матричным API C
Язык C++ выходит, чтобы рассмотреть при создании MEX-функций, созданных с Матричным API C.
Обработка ошибок в Файлах MEX на C
Распечатайте информацию об ошибке с помощью mexErrMsgIdAndTxt
функция.
Обработка ввода-вывода Большого файла в файлах MEX
Как использовать 64-битный файловый ввод-вывод в вашем файле MEX.
Тестирование на больше-всего-производный-класс
Как исключить подклассы встроенных типов от входных параметров файла MEX.
В этом примере показано, как создать пример C MEX-функция arrayProduct
.
Обновите файлы MEX, чтобы использовать чередованный комплексный API
MATLAB Version 9.4 (R2018a) поддерживает чередованное представление комплексных чисел.
Обновление файлов MEX, чтобы использовать 64-битный API
MATLAB Version 9.2 (R2017a) создает файлы MEX с 64-битным API по умолчанию.
Обновление файлов MEX, чтобы использовать графические объекты
MATLAB Version 8.4 (R2014b) изменяет тип данных указателей на графические объекты от double
возразить.
Информация о сборке документа в файле MEX
В этом примере показано, как зарегистрировать xtimesy
Файл MEX основывался на платформе Windows® с помощью Microsoft® Visual C ++® компилятор.
Получение справки, когда MEX перестал работать
Чтобы помочь диагностировать настроенный компилятор и ошибки сборки, вызовите mex
функция с многословной опцией-v.
Что сделать, когда компиляция файла MEX перестала работать.
Несовместимости API Поиска и устранения проблем MEX
Больше информации для предупреждений и сообщений об ошибке.
Поиск и устранение проблем и Ограничения при компиляции Файлы MEX C/C++ с MinGW-w64
Поиск и устранение проблем файлов MEX создается с компилятором MinGW-w64.
Символ mexFunction Неразрешенный или Не Заданный
Каждый файл MEX нуждается в mexFunction
.
Что сделать, когда вы получаете недопустимую ошибку файла MEX.
Для лучших результатов запустите файлы MEX, созданные с вашей версией MATLAB.
Если вы получаете бинарный файл MEX от другого источника, уверены, что файл был скомпилирован для той же платформы, на которой вы хотите запустить его.
API MEX не Ориентирован на многопотоковое исполнение
Не вызывайте один сеанс MATLAB на отдельных потоках от файла MEX.
Что сделать, когда файл MEX вызывает нарушение сегментации или утверждение.
Файл MEX генерирует неправильные результаты
Что сделать, когда ваш MEX генерирует неправильные ответы.
Отладьте на платформах Microsoft Windows
Предложения для отладки с Microsoft Visual Studio®.
В этом примере показано, как отладить файл MEX на Платформах Mac.
В этом примере показано, как отладить файл MEX на Платформах Linux®.