API C++ MEX не совместим с API MEX C. Вы не можете смешать эти API в файле MEX.
API C++ MEX позволяет вам создать приложения, которые используют в своих интересах C++ 11 функций, таких как семантика перемещения, обработка исключений и управление памятью.
matlab::mex::Function | Базовый класс для MEX-функций C++ |
matlab::mex::ArgumentList | Контейнер для вводов и выводов от MEX-функций C++ |
matlab::engine::MATLABEngine | Engine API определения класса |
matlab::mex::Function
Все реализации файла MEX являются классами, которые выводят от matlab::mex::Function
.
std::shared_ptr<matlab::engine::MatlabEngine> getEngine() | Получите указатель на объект MATLABEngine |
void mexLock() | Предотвратите очистку файла MEX из памяти |
void mexUnLock() | Позвольте очищаться файла MEX из памяти |
std::u16string getFunctionName() | Получите имя текущей MEX-функции |
matlab::mex::ArgumentList
Аргументы MEX-функции, переданные через operator()
класса MexFunction
, являются контейнерами matlab::mex::ArgumentList
. ArgumentList
является полным спектром к базовому набору массивов. Поддержка объектов ArgumentList
следующие функции.
operator[] | Включает индексацию [] в элементы ArgumentList . |
begin() | Начальный итератор. |
end() | Конечный итератор. |
size() | Возвращает число элементов в списке аргументов. Используйте эту функцию, чтобы проверять количество вводов и выводов, заданных на сайте вызова. |
empty() | Возвращает логическое значение, указывающее, пуст ли список аргументов (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:: | Вызовите функции MATLAB с аргументами |
mATLABEngine:: MATLABEngine:: | Вызовите функцию MATLAB с аргументами и возвращенными значениями асинхронно. |
mATLABEngine:: MATLABEngine:: | Оцените выражения MATLAB в базовом рабочем пространстве |
mATLABEngine:: MATLABEngine:: | Оцените выражения MATLAB в базовом рабочем пространстве асинхронно |
mATLABEngine:: MATLABEngine:: | Получите переменные из основы MATLAB или глобальной рабочей области |
mATLABEngine:: MATLABEngine:: | Получите переменные из основы MATLAB или глобальной рабочей области асинхронно |
mATLABEngine:: MATLABEngine:: | Поместите переменные в основу MATLAB или глобальную рабочую область |
mATLABEngine:: MATLABEngine:: | Поместите переменные в основу MATLAB или глобальную рабочую область асинхронно |
mATLABEngine:: MATLABEngine:: | Получите свойство объекта |
mATLABEngine:: MATLABEngine:: | Получите свойство объекта асинхронно |
mATLABEngine:: MATLABEngine:: | Установите свойство объекта |
mATLABEngine:: MATLABEngine:: | Установите свойство объекта асинхронно |
matlab::engine::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-функций
matlab::engine::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'
matlab::engine::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-функции
matlab::engine::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'
matlab::engine::MATLABEngine::getVariable
matlab::data::Array getVariable(const std::u16string &varName, WorkspaceType workspaceType = WorkspaceType::BASE)
Получите переменную из основы MATLAB или глобальной рабочей области.
| Имя переменной в рабочем пространстве MATLAB. Задайте имя как |
| Рабочее пространство MATLAB (ОСНОВА или ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ), чтобы получить переменную из. Для получения дополнительной информации смотрите |
| Переменная, полученная из MATLAB, базируется или глобальная рабочая область |
| Требуемая переменная не существует в заданной основе MATLAB или глобальной рабочей области. |
Для получения дополнительной информации смотрите Набор и Получите переменные MATLAB от MEX
matlab::engine::MATLABEngine::getVariableAsync
FutureResult<matlab::data::Array> getVariableAsync(const std::u16string &varName, WorkspaceType workspaceType = WorkspaceType::BASE)
Получите переменную из основы MATLAB или глобальной рабочей области асинхронно.
| Имя переменной в рабочем пространстве MATLAB. Задайте имя как |
| Рабочее пространство MATLAB (ОСНОВА или ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ), чтобы получить переменную из. Для получения дополнительной информации смотрите |
| Объект |
'none'
matlab::engine::MATLABEngine::setVariable
void setVariable(const std::u16string &varName, const matlab::data::Array &var, WorkspaceType workspaceType = WorkspaceType::BASE)
Поместите переменную в основу MATLAB или глобальную рабочую область. Если переменная с тем же именем существует в рабочем пространстве MATLAB, setVariable
перезаписывает его.
| Имя переменной, чтобы создать в рабочем пространстве MATLAB. Задайте имя как |
| Значение переменной, чтобы создать в рабочем пространстве MATLAB. |
| Рабочее пространство MATLAB (ОСНОВА или ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ), чтобы поместить переменную в. Для получения дополнительной информации смотрите |
Для получения дополнительной информации смотрите Набор и Получите переменные MATLAB от MEX
matlab::engine::MATLABEngine::setVariableAsync
FutureResult<void> setVariableAsync(const std::u16string &varName, const matlab::data::Array var, WorkspaceType workspaceType = WorkspaceType::BASE)
Поместите переменную в основу MATLAB или глобальную рабочую область асинхронно. Если переменная с тем же именем существует в базовом рабочем пространстве MATLAB, setVariableAsync
перезаписывает его.
| Имя переменной, чтобы создать в рабочем пространстве MATLAB. Задайте имя как |
| Значение переменной, чтобы создать в рабочем пространстве MATLAB |
| Поместите переменную в ОСНОВУ MATLAB или ГЛОБАЛЬНУЮ рабочую область. Для получения дополнительной информации смотрите |
'none'
matlab::engine::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-функциях
matlab::engine::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'
matlab::engine::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-функциях
matlab::engine::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-функции