API C++ MEX

Примечание

API C++ MEX не совместим с API MEX C. Вы не можете смешать эти API в файле MEX.

API C++ MEX позволяет вам создать приложения, которые используют в своих интересах C++ 11 функций, таких как семантика перемещения, обработка исключений и управление памятью.

mATLAB:: mEX:: ФункцияБазовый класс для MEX-функций C++
mATLAB:: mEX:: ArgumentListКонтейнер для вводов и выводов от MEX-функций C++
mATLABEngine:: MATLABEngineEngine 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).

Engine API для C++

Функции 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++.

Параметры

const std::u16string &function

Имя функции MATLAB или скрипта, чтобы оценить. Задайте имя как std::u16string. Кроме того, можно задать этот параметр как std::string строка.

const size_t nlhs

Количество возвращенных значений.

const std::vector<matlab::data::Array> &args

Несколько входных параметров, чтобы передать функции MATLAB в std::vector. Вектор преобразован в массив столбца в MATLAB.

const matlab::data::Array &arg

Единственный входной параметр, чтобы передать функции MATLAB.

const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>()

Потоковый буфер раньше хранил стандартный вывод от функции MATLAB.

const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>()

Потоковый буфер раньше хранил сообщение об ошибке от функции MATLAB.

RhsArgs&&... rhsArgs

Нативные типы данных C++ используются для входных параметров функции. feval принимает скалярные входные параметры этих типов данных C++: bool, int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t, float, double.

Возвращаемое значение

станд:: вектор <MATLAB:: данные:: Массив>

Выходные параметры возвращены в функцию MATLAB.

matlab::data:: Массив

Единственный вывод возвращен в функцию MATLAB.

ResultType

Выведите возвратился из функции MATLAB как заданный пользователями тип. Может быть std::tuple при возврате нескольких аргументов.

Исключения

mATLABEngine:: Matlab.exception

В функции существует ошибка периода выполнения MATLAB.

mATLABEngine:: TypeConversionException

Результат функции MATLAB не может быть преобразован в заданный тип.

mATLABEngine:: MatlabSyntaxException

В функции 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 с аргументами и возвращенными значениями асинхронно.

Параметры

const std::u16string &function

Имя функции MATLAB или скрипта, чтобы оценить. Задайте имя как std::u16string. Кроме того, можно задать этот параметр как std::string строка.

const size_t numReturned

Количество возвращенных значений

const std::vector<matlab::data::Array> &args

Несколько входных параметров, чтобы передать функции MATLAB в std::vector. Вектор преобразован в массив столбца в MATLAB.

const matlab::data::Array arg

Единственный входной параметр, чтобы передать функции MATLAB.

const std::shared_ptr<matlab::engine::StreamBuffer> &output = std::shared_ptr<matlab::engine::StreamBuffer>()

Потоковый буфер раньше хранил стандартный вывод от функции MATLAB.

const std::shared_ptr<matlab::engine::StreamBuffer> &error = std::shared_ptr<matlab::engine::StreamBuffer>()

Потоковый буфер раньше хранил сообщение об ошибке от функции MATLAB.

RhsArgs&&... rhsArgs

Нативные типы данных C++ используются для входных параметров функции. feval принимает скалярные входные параметры этих типов данных C++: bool, int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t, float, double.

Возвращаемое значение

FutureResult

Объект FutureResult раньше получал результат вызова функции MATLAB.

Исключения

'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 как текстовую строку в рабочей области функции вызова.

Параметры

const std::u16string &statement

Оператор MATLAB, чтобы оценить

const std::shared_ptr<matlab::engine::StreamBuffer> &output

Потоковый буфер раньше хранил стандартный вывод от оператора MATLAB

const std::shared_ptr<matlab::engine::StreamBuffer> &error

Потоковый буфер раньше хранил сообщение об ошибке от команды MATLAB

Исключения

mATLABEngine:: MatlabExecutionException

В операторе MATLAB существует ошибка периода выполнения.

mATLABEngine:: MatlabSyntaxException

В операторе 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 как строку асинхронно.

Параметры

const std::u16string &str

Оператор MATLAB, чтобы оценить

const std::shared_ptr<matlab::engine::StreamBuffer> & output

Потоковый буфер раньше хранил стандартный вывод от оператора MATLAB.

const std::shared_ptr<matlab::engine::StreamBuffer> & error

Потоковый буфер раньше хранил сообщение об ошибке от команды MATLAB.

Возвращаемое значение

mATLABEngine:: FutureResult

Объект FutureResult раньше ожидал завершения оператора MATLAB.

Исключения

'none'

mATLABEngine:: MATLABEngine:: getVariable

matlab::data::Array getVariable(const std::u16string &varName,
    WorkspaceType workspaceType = WorkspaceType::BASE)

Описание

Получите переменную от основы MATLAB или глобальной рабочей области.

Параметры

const std::u16string& varName

Имя переменной в MATLAB workspace. Задайте имя как std::u16string. Кроме того, можно задать этот параметр как std::string строка.

mATLABEngine:: WorkspaceType workspaceType = MATLAB:: механизм:: WorkspaceType:: ОСНОВА

MATLAB workspace (ОСНОВА или ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ), чтобы получить переменную от. Для получения дополнительной информации смотрите global и matlab::engine::WorkspaceType .

Возвращаемое значение

matlab::data:: Массив

Переменная, полученная из MATLAB, базируется или глобальная рабочая область

Исключения

mATLABEngine:: MatlabExecutionException

Требуемая переменная не существует в заданной основе MATLAB или глобальной рабочей области.

Для получения дополнительной информации смотрите Набор и Получите переменные MATLAB от MEX

mATLABEngine:: MATLABEngine:: getVariableAsync

FutureResult<matlab::data::Array> getVariableAsync(const std::u16string &varName,
    WorkspaceType workspaceType = WorkspaceType::BASE)

Описание

Получите переменную от основы MATLAB или глобальной рабочей области асинхронно.

Параметры

const std::u16string& varName

Имя переменной в MATLAB workspace. Задайте имя как std::u16string. Кроме того, можно задать этот параметр как std::string строка.

WorkspaceType workspaceType = WorkspaceType::BASE

MATLAB workspace (ОСНОВА или ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ), чтобы получить переменную от. Для получения дополнительной информации смотрите global.

Возвращаемое значение

mATLABEngine:: FutureResult

Объект FutureResult, который можно использовать, чтобы получить переменную из MATLAB workspace как matlab.data.Array .

Исключения

'none'

mATLABEngine:: MATLABEngine:: setVariable

void setVariable(const std::u16string &varName,
   const matlab::data::Array &var,
   WorkspaceType workspaceType = WorkspaceType::BASE)

Описание

Поместите переменную в основу MATLAB или глобальную рабочую область. Если переменная с тем же именем существует в MATLAB workspace, setVariable перезаписывает его.

Параметры

const std::u16string& varName

Имя переменной, чтобы создать в MATLAB workspace. Задайте имя как std::u16string. Кроме того, можно задать этот параметр как std::string строка.

const matlab::data::Array var

Значение переменной, чтобы создать в MATLAB workspace.

mATLABEngine:: WorkspaceType workspaceType = MATLAB:: механизм:: WorkspaceType:: ОСНОВА

MATLAB workspace (ОСНОВА или ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ), чтобы поместить переменную в. Для получения дополнительной информации смотрите global и matlab::engine::WorkspaceType .

Для получения дополнительной информации смотрите Набор и Получите переменные MATLAB от MEX

mATLABEngine:: MATLABEngine:: setVariableAsync

FutureResult<void> setVariableAsync(const std::u16string &varName,
   const matlab::data::Array var,
   WorkspaceType workspaceType = WorkspaceType::BASE)

Описание

Поместите переменную в основу MATLAB или глобальную рабочую область асинхронно. Если переменная с тем же именем существует в базовом рабочем пространстве MATLAB, setVariableAsync перезаписывает его.

Параметры

const std::u16string& varName

Имя переменной, чтобы создать в MATLAB workspace. Задайте имя как std::u16string. Кроме того, можно задать этот параметр как std::string строка.

const matlab::data::Array var

Значение переменной, чтобы создать в MATLAB workspace

WorkspaceType workspaceType = WorkspaceType::BASE

Поместите переменную в ОСНОВУ MATLAB или ГЛОБАЛЬНУЮ рабочую область. Для получения дополнительной информации смотрите global.

Исключения

'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)

Описание

Получите значение свойства объекта. Если объектный входной параметр является массивом объектов, задайте индекс элемента массива, который соответствует объекту, значение свойства которого вы хотите получить.

Параметры

const matlab::data::Array &objectArray

Массив объектов MATLAB

const matlab::data::Array &object

Скалярный объект MATLAB

size_t index

Основанный на нуле индекс в объектный массив, задавая объект в том массиве, значение свойства которого возвращено

const std::u16string &propertyName

Имя свойства. Задайте имя как std::u16string. Кроме того, можно задать этот параметр как std::string строка.

Возвращаемое значение

matlab::data:: Массив

Значение именованного свойства

Исключения

mATLABEngine:: MatlabExecutionException

Свойство не существует.

Для получения дополнительной информации смотрите Объекты 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)

Описание

Получите значение свойства объекта асинхронно. Если объектный входной параметр является массивом объектов, задайте индекс элемента массива, который соответствует объекту, значение свойства которого вы хотите получить.

Параметры

const matlab::data::Array &objectArray

Массив объектов MATLAB

const matlab::data::Array &object

Скалярный объект MATLAB

size_t index

Основанный на нуле индекс в объектный массив, задавая объект в том массиве, значение свойства которого возвращено

const std::u16string &propertyName

Имя свойства. Задайте имя как std::u16string. Кроме того, можно задать этот параметр как std::string строка.

Возвращаемое значение

mATLABEngine:: FutureResult

mATLABEngine:: Объект FutureResult, который используется, чтобы синхронизировать операцию.

Исключения

'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::data:: Массив &objectArray

Массив объектов MATLAB

matlab::data:: Массив &object

Скалярный объект MATLAB

size_t index

Основанный на нуле индекс в объектный массив, задавая объект в том массиве, значение свойства которого установлено

const std::u16string &propertyName

Имя свойства установить. Задайте имя как std::u16string. Кроме того, можно задать этот параметр как std::string строка.

const matlab::data::Array &propertyValue

Значение присвоено свойству

Исключения

mATLABEngine:: MatlabExecutionException

Свойство не существует.

Для получения дополнительной информации смотрите Объекты 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::data:: Массив &objectArray

Массив объектов MATLAB

matlab::data:: Массив &object

Скалярный объект MATLAB

size_t index

Основанный на нуле индекс в объектный массив, задавая объект в том массиве, значение свойства которого установлено

const std::u16string &propertyName

Имя свойства установить. Задайте имя как std::u16string. Кроме того, можно задать этот параметр как std::string строка.

const matlab::data::Array &propertyValue

Значение присвоено свойству.

Исключения

'none'

Классы исключений

ИсключениеПричина

mATLABEngine:: EngineException

Существует ошибка периода выполнения MATLAB в функции, или MATLAB не удается запуститься.

mATLABEngine:: MatlabSyntaxException

В функции MATLAB существует синтаксическая ошибка.

mATLABEngine:: MatlabExecutionException

Существует ошибка периода выполнения MATLAB в функции MATLAB или операторе.

mATLABEngine:: TypeConversionException

Результат функции MATLAB не может быть преобразован в заданный тип

Для получения дополнительной информации смотрите Исключения Выгоды в MEX-функции

Похожие темы

Была ли эта тема полезной?