mxArrayМожно вызвать собственные программы C или C++ из командной строки MATLAB, как если бы они были встроенными функциями. Эти программы называются функциями MEX, а имя функции - именем файла MEX. Функции MEX подходят не для всех приложений. MATLAB - это высокопроизводительная среда, специализация которой заключается в устранении трудоемкого и низкоуровневого программирования на компилируемых языках. В общем, выполняйте программирование в MATLAB. Не используйте функции MEX, если этого не требует приложение.
Чтобы создать функцию MEX, напишите свои программы с помощью API MATLAB. Функции этих библиотек упрощают передачу данных между функциями MEX и рабочей областью. Чтобы выбрать API MATLAB, рассмотрим следующее.
MathWorks рекомендует создавать функции MEX с использованием современных функций C++, определенных в MATLAB Data API. Дополнительные сведения см. в разделе Приложения C++ MEX.
Если функции MEX должны выполняться в MATLAB R2017b или ранее, или если вы предпочитаете работать на языке C, то используйте функции в C Matrix API и C MEX API. Эти API используют MATLAB mxArray структура данных. Функции и темы на этой странице основаны на mxArray.
Примечание
Выберите функции из C Matrix API или MATLAB Data API; нельзя смешивать функции из этих API.
Создайте исходный файл в исполняемую программу с помощью mex функция. Можно также предоставить общий доступ к файлу MEX другим пользователям MATLAB.
Сведения о написании S-функций см. в документации Simulink ®.
Для вызова функции MEX, созданной другим пользователем, см. раздел Функции файлов MEX.
Если имеется программа C/C + + и требуется вызвать функции MATLAB из программы, то используйте один из API механизма.
Если требуется считывать и записывать данные MATLAB из программ C/C + +, используйте API MATLAB C для чтения данных MAT-файла.
mexFunction | Точка входа в функцию C/C + + MEX, построенную с помощью C Matrix API |
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 |
В этом примере показано, как создать arrayProduct Функция C MEX, построенная с помощью C Matrix API.
Таблицы примеров исходного кода функции MEX
Ссылки на исходный код для примеров функций MEX.
Используя mxArray в MEX-файлах.
Правила управления mxArray память.
Создание функций C++ MEX с помощью C Matrix API
Проблемы языка C++, которые необходимо учитывать при создании функций MEX, построенных с помощью C Matrix API.
Обработка ошибок в файлах C MEX
Печать информации об ошибках с помощью mexErrMsgIdAndTxt функция.
Обработка операций ввода-вывода больших файлов в файлах MEX
Как использовать 64-разрядный файл ввода-вывода в файле MEX.
Тестирование для наиболее производного класса
Как исключить подклассы встроенных типов из входных аргументов файла MEX.
В этом примере показано построение примера функции C MEX. arrayProduct.
Обновление файлов MEX для использования сложного API с чередованием
MATLAB версии 9.4 (R2018a) поддерживает чередующееся представление комплексных чисел.
Обновление файлов MEX для использования 64-Bit API
MATLAB версии 9.2 (R2017a) по умолчанию создает MEX-файлы с 64-разрядным API.
Обновление файлов MEX для использования графических объектов
MATLAB версии 8.4 (R2014b) изменяет тип данных дескрипторов на графические объекты из double в объект.
Сведения о построении документов в файле MEX
В этом примере показано, как документировать xtimesy Файл MEX, созданный на платформе Windows ® с помощью компилятора Microsoft ® Visual C++ ®.
Получение справки при сбое MEX
Чтобы помочь диагностировать ошибки настройки и построения компилятора, вызовите mex функция с подробным параметром -v.
Что делать при сбое компиляции MEX-файла.
Устранение неполадок несовместимости MEX API
Дополнительные сведения о предупреждениях и сообщениях об ошибках.
Устранение неполадок и ограничения при компиляции файлов C/C + + MEX с MinGW-w64
Устранение неполадок MEX-файлов, созданных с помощью компилятора MinGW-w64.
Символ mexФункция неразрешена или не определена
Каждому файлу MEX требуется mexFunction.
Что делать при получении недопустимой ошибки файла MEX.
Для получения наилучших результатов запустите MEX-файлы, созданные с использованием версии MATLAB.
Если двоичный файл MEX получен из другого источника, убедитесь, что файл был скомпилирован для той же платформы, на которой его нужно запустить.
Интерфейс MEX API не безопасен для потоков
Не вызывайте один сеанс MATLAB для отдельных потоков из файла MEX.
Что делать, когда MEX-файл вызывает нарушение сегментации или утверждение.
Файл MEX генерирует неверные результаты
Что делать, когда MEX генерирует неправильные ответы.
Отладка на платформах Microsoft Windows
Рекомендации по отладке с помощью Microsoft Visual Studio ®.
В этом примере показано, как отладить файл MEX на платформах Mac.
В этом примере показано, как отладить файл MEX на платформах Linux ®.