API C++ MEX не совместим с API MEX C. Вы не можете смешать эти API в файле MEX.
API C++ MEX позволяет вам создать приложения, которые используют в своих интересах C++ 11 функций, таких как семантика перемещения, обработка исключений и управление памятью.
mATLAB:: mEX:: Функция | Базовый класс для MEX-функций C++ |
mATLAB:: mEX:: ArgumentList | Контейнер для вводов и выводов от MEX-функций C++ |
mATLABEngine:: MATLABEngine | Engine API определения класса |
mATLAB:: mEX:: Функция
Все реализации файла MEX являются классами, которые выводят от matlab::mex::Function
.
станд:: shared_ptr <MATLAB:: механизм:: MatlabEngine> getEngine () | Получите указатель на объект MATLABEngine |
void mexLock() | Предотвратите очистку файла MEX из памяти |
void mexUnLock() | Позвольте очищаться файла MEX из памяти |
станд:: u16string getFunctionName () | Получите имя текущей MEX-функции |
mATLAB:: mEX:: ArgumentList
Аргументы MEX-функции, переданные через operator()
класса MexFunction
, являются контейнерами matlab::mex::ArgumentList
. ArgumentList
является полным спектром к базовому набору массивов. Поддержка объектов ArgumentList
следующие функции.
оператор | Включает индексацию [] в элементы ArgumentList . |
начало | Начальный итератор. |
конец | Конечный итератор. |
размер | Возвращает число элементов в списке аргументов. Используйте эту функцию, чтобы проверить количество вводов и выводов, заданных на сайте вызова. |
пустой | Возвращает логическое значение, указывающее, пуст ли список аргументов (size() == 0 ). |
Функции Access MATLAB®, переменные и объекты с помощью API matlab::engine::MATLABEngine
описаны в следующих разделах. Чтобы вызвать функции matlab::engine::MATLABEngine
, получите разделяемый указатель, который возвращен функцией matlab::mex::Function::getEngine
. Например:
std::shared_ptr<matlab::engine::MATLABEngine> matlabPtr = getEngine();
Используйте этот указатель, чтобы вызвать функции механизма. Например:
matlabPtr->feval(...);
Вызовите функции механизма только на том же потоке как класс MexFunction
.
mATLABEngine:: MATLABEngine:: feval | Вызовите функции MATLAB с аргументами |
mATLABEngine:: MATLABEngine:: fevalAsync | Вызовите функцию MATLAB с аргументами и возвращенными значениями асинхронно. |
mATLABEngine:: MATLABEngine:: eval | Оцените операторы MATLAB в базовом рабочем пространстве |
mATLABEngine:: MATLABEngine:: evalAsync | Оцените операторы MATLAB в базовом рабочем пространстве асинхронно |
mATLABEngine:: MATLABEngine:: getVariable | Получите переменные от основы MATLAB или глобальной рабочей области |
mATLABEngine:: MATLABEngine:: getVariableAsync | Получите переменные от основы MATLAB или глобальной рабочей области асинхронно |
mATLABEngine:: MATLABEngine:: setVariable | Поместите переменные в основу MATLAB или глобальную рабочую область |
mATLABEngine:: MATLABEngine:: setVariableAsync | Поместите переменные в основу MATLAB или глобальную рабочую область асинхронно |
mATLABEngine:: MATLABEngine:: getProperty | Получите свойство объекта |
mATLABEngine:: MATLABEngine:: getPropertyAsync | Получите свойство объекта асинхронно |
mATLABEngine:: MATLABEngine:: setProperty | Установите свойство объекта |
mATLABEngine:: MATLABEngine:: setPropertyAsync | Установите свойство объекта асинхронно |
mATLABEngine:: MATLABEngine:: feval
std::vector<matlab::data::Array> feval(const std::u16string &function, const size_t numReturned, const std::vector<matlab::data::Array> &args, const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>, const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())
matlab::data::Array feval(const std::u16string &function, const std::vector<matlab::data::Array> &args, const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>(), const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())
matlab::data::Array feval(const std::u16string &function, const matlab::data::Array &arg, const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>(), const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())
ResultType feval(const std::u16string &function, const std::shared_ptr<matlab::engine::StreamBuffer> &output, const std::shared_ptr<matlab::engine::StreamBuffer> &error, RhsArgs&&... rhsArgs )
ResultType feval(const std::u16string &function, RhsArgs&&... rhsArgs)
Вызовите функции MATLAB от MEX-функций. Используйте feval
, чтобы вызвать функции MATLAB с аргументами, переданными от MEX-функций и возвратить результат MATLAB в MEX-функцию.
Вводы и выводы являются типами, заданными MATLAB Data API. Существует также синтаксис, чтобы поддержать нативные типы C++.
| Имя функции MATLAB или скрипта, чтобы оценить. Задайте имя как |
| Количество возвращенных значений. |
| Несколько входных параметров, чтобы передать функции MATLAB в |
| Единственный входной параметр, чтобы передать функции MATLAB. |
| Потоковый буфер раньше хранил стандартный вывод от функции MATLAB. |
| Потоковый буфер раньше хранил сообщение об ошибке от функции MATLAB. |
| Нативные типы данных C++ используются для входных параметров функции. |
| Выходные параметры возвращены в функцию MATLAB. |
| Единственный вывод возвращен в функцию MATLAB. |
| Выведите возвратился из функции MATLAB как заданный пользователями тип. Может быть |
| В функции существует ошибка периода выполнения MATLAB. |
| Результат функции MATLAB не может быть преобразован в заданный тип. |
| В функции MATLAB существует синтаксическая ошибка. |
Для получения дополнительной информации смотрите функции MATLAB Вызова от MEX-функций
mATLABEngine:: MATLABEngine:: fevalAsync
FutureResult<std::vector<matlab::data::Array>> fevalAsync(const std::u16string &function, const size_t numReturned, const std::vector<matlab::data::Array> &args, const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>(), const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())
FutureResult<matlab::data::Array> fevalAsync(const std::u16string &function, const std::vector<matlab::data::Array> &args, const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>(), const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>())
FutureResult<matlab::data::Array> fevalAsync(const std::u16string &function, const matlab::data::Array &arg, const std::shared_ptr<matlab::engine::StreamBuffer> & output = std::shared_ptr<matlab::engine::StreamBuffer>(), const std::shared_ptr<matlab::engine::StreamBuffer> & error = std::shared_ptr<matlab::engine::StreamBuffer>())
FutureResult<ResultType> fevalAsync(const std::u16string &function, const std::shared_ptr<matlab::engine::StreamBuffer> &output, const std::shared_ptr<matlab::engine::StreamBuffer> &error, RhsArgs&&... rhsArgs)
FutureResult<ResultType> fevalAsync(const std::u16string &function, RhsArgs&&... rhsArgs)
Вызовите функцию MATLAB с аргументами и возвращенными значениями асинхронно.
| Имя функции MATLAB или скрипта, чтобы оценить. Задайте имя как |
| Количество возвращенных значений |
| Несколько входных параметров, чтобы передать функции MATLAB в |
| Единственный входной параметр, чтобы передать функции MATLAB. |
| Потоковый буфер раньше хранил стандартный вывод от функции MATLAB. |
| Потоковый буфер раньше хранил сообщение об ошибке от функции MATLAB. |
| Нативные типы данных C++ используются для входных параметров функции. |
| Объект |
'none'
mATLABEngine:: MATLABEngine:: eval
void eval(const std::u16string &statement, const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer> (), const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer> ())
Оцените оператор MATLAB как текстовую строку в рабочей области функции вызова.
| Оператор MATLAB, чтобы оценить |
| Потоковый буфер раньше хранил стандартный вывод от оператора MATLAB |
| Потоковый буфер раньше хранил сообщение об ошибке от команды MATLAB |
| В операторе MATLAB существует ошибка периода выполнения. |
| В операторе MATLAB существует синтаксическая ошибка. |
Для получения дополнительной информации смотрите, Выполняют Операторы MATLAB от MEX-функции
mATLABEngine:: MATLABEngine:: evalAsync
FutureResult<void> evalAsync(const std::u16string &str, const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer> (), const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer> ())
Оцените оператор MATLAB как строку асинхронно.
| Оператор MATLAB, чтобы оценить |
| Потоковый буфер раньше хранил стандартный вывод от оператора MATLAB. |
| Потоковый буфер раньше хранил сообщение об ошибке от команды MATLAB. |
| Объект |
'none'
mATLABEngine:: MATLABEngine:: getVariable
matlab::data::Array getVariable(const std::u16string &varName, WorkspaceType workspaceType = WorkspaceType::BASE)
Получите переменную от основы MATLAB или глобальной рабочей области.
| Имя переменной в MATLAB workspace. Задайте имя как |
| MATLAB workspace (ОСНОВА или ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ), чтобы получить переменную от. Для получения дополнительной информации смотрите |
| Переменная, полученная из MATLAB, базируется или глобальная рабочая область |
| Требуемая переменная не существует в заданной основе MATLAB или глобальной рабочей области. |
Для получения дополнительной информации смотрите Набор и Получите переменные MATLAB от MEX
mATLABEngine:: MATLABEngine:: getVariableAsync
FutureResult<matlab::data::Array> getVariableAsync(const std::u16string &varName, WorkspaceType workspaceType = WorkspaceType::BASE)
Получите переменную от основы MATLAB или глобальной рабочей области асинхронно.
| Имя переменной в MATLAB workspace. Задайте имя как |
| MATLAB workspace (ОСНОВА или ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ), чтобы получить переменную от. Для получения дополнительной информации смотрите |
| Объект |
'none'
mATLABEngine:: MATLABEngine:: setVariable
void setVariable(const std::u16string &varName, const matlab::data::Array &var, WorkspaceType workspaceType = WorkspaceType::BASE)
Поместите переменную в основу MATLAB или глобальную рабочую область. Если переменная с тем же именем существует в MATLAB workspace, setVariable
перезаписывает его.
| Имя переменной, чтобы создать в MATLAB workspace. Задайте имя как |
| Значение переменной, чтобы создать в MATLAB workspace. |
| MATLAB workspace (ОСНОВА или ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ), чтобы поместить переменную в. Для получения дополнительной информации смотрите |
Для получения дополнительной информации смотрите Набор и Получите переменные MATLAB от MEX
mATLABEngine:: MATLABEngine:: setVariableAsync
FutureResult<void> setVariableAsync(const std::u16string &varName, const matlab::data::Array var, WorkspaceType workspaceType = WorkspaceType::BASE)
Поместите переменную в основу MATLAB или глобальную рабочую область асинхронно. Если переменная с тем же именем существует в базовом рабочем пространстве MATLAB, setVariableAsync
перезаписывает его.
| Имя переменной, чтобы создать в MATLAB workspace. Задайте имя как |
| Значение переменной, чтобы создать в MATLAB workspace |
| Поместите переменную в ОСНОВУ MATLAB или ГЛОБАЛЬНУЮ рабочую область. Для получения дополнительной информации смотрите |
'none'
mATLABEngine:: MATLABEngine:: getProperty
matlab::data::Array getProperty(const matlab::data::Array &objectArray, size_t index, const std::u16string &propertyName)
matlab::data::Array getProperty(const matlab::data::Array &object, const std::u16string &propertyName)
Получите значение свойства объекта. Если объектный входной параметр является массивом объектов, задайте индекс элемента массива, который соответствует объекту, значение свойства которого вы хотите получить.
| Массив объектов MATLAB |
| Скалярный объект MATLAB |
| Основанный на нуле индекс в объектный массив, задавая объект в том массиве, значение свойства которого возвращено |
| Имя свойства. Задайте имя как |
| Значение именованного свойства |
| Свойство не существует. |
Для получения дополнительной информации смотрите Объекты MATLAB в MEX-функциях
mATLABEngine:: MATLABEngine:: getPropertyAsync
matlab::engine::FutureResult<matlab::data::Array> getPropertyAsync(const matlab::data::Array &objectArray, size_t index, const std::u16string &propertyName)
matlab::engine::FutureResult<matlab::data::Array> getPropertyAsync(const matlab::data::Array &object, const std::u16string &propertyName)
Получите значение свойства объекта асинхронно. Если объектный входной параметр является массивом объектов, задайте индекс элемента массива, который соответствует объекту, значение свойства которого вы хотите получить.
| Массив объектов MATLAB |
| Скалярный объект MATLAB |
| Основанный на нуле индекс в объектный массив, задавая объект в том массиве, значение свойства которого возвращено |
| Имя свойства. Задайте имя как |
|
|
'none'
mATLABEngine:: MATLABEngine:: setProperty
void setProperty(matlab::data::Array &objectArray, size_t index, const std::u16string &propertyName, const matlab::data::Array &propertyValue)
void setProperty(matlab::data::Array &object, const std::u16string &propertyName, const matlab::data::Array &propertyValue)
Установите значение свойства объекта. Если объектный входной параметр является массивом объектов, задайте индекс элемента массива, который соответствует объекту, значение свойства которого вы хотите установить.
| Массив объектов MATLAB |
| Скалярный объект MATLAB |
| Основанный на нуле индекс в объектный массив, задавая объект в том массиве, значение свойства которого установлено |
| Имя свойства установить. Задайте имя как |
const matlab::data::Array &propertyValue | Значение присвоено свойству |
| Свойство не существует. |
Для получения дополнительной информации смотрите Объекты MATLAB в MEX-функциях
mATLABEngine:: MATLABEngine:: setPropertyAsync
FutureResult<void> setPropertyAsync(matlab::data::Array &objectArray, size_t index, const std::u16string &propertyName, const matlab::data::Array &propertyValue)
FutureResult<void> setPropertyAsync(matlab::data::Array &object, const std::u16string &propertyName, const matlab::data::Array &propertyValue)
Установите значение свойства объекта асинхронно. Если объектный входной параметр является массивом объектов, задайте индекс элемента массива, который соответствует объекту, значение свойства которого вы хотите установить.
| Массив объектов MATLAB |
| Скалярный объект MATLAB |
| Основанный на нуле индекс в объектный массив, задавая объект в том массиве, значение свойства которого установлено |
| Имя свойства установить. Задайте имя как |
const matlab::data::Array &propertyValue | Значение присвоено свойству. |
'none'
Исключение | Причина |
---|---|
| Существует ошибка периода выполнения MATLAB в функции, или MATLAB не удается запуститься. |
| В функции MATLAB существует синтаксическая ошибка. |
| Существует ошибка периода выполнения MATLAB в функции MATLAB или операторе. |
| Результат функции MATLAB не может быть преобразован в заданный тип |
Для получения дополнительной информации смотрите Исключения Выгоды в MEX-функции