MATLAB® интерфейс автоматически преобразует сигнатуры функции C++ в сигнатуры функции MATLAB. Однако некоторые конструкции языка C++ не имеют уникальных соответствий на языке MATLAB. Чтобы включить эту функциональность в интерфейс, отредактируйте .mlx
Определением файла и замените <DIRECTION>
, <SHAPE>
, и <MLTYPE>
параметры с отсутствующей информацией. Эти параметры используются в следующих случаях.
Чтобы указать, является ли аргумент указателя входным, выходным или изменяемым входным параметром только для чтения, используйте параметр DIRECTION.
Если для данных массива используется аргумент, то для преобразования массива между C++ и MATLAB требуется информация о размерности. Используйте параметр SHAPE, чтобы задать эту информацию.
C++ имеет много типов, представляющих строковые аргументы. Возможно, вам потребуется задать значения MLTYPE и SHAPE, чтобы MATLAB мог правильно преобразовать тип C++ в MATLAB string
тип.
MATLAB предлагает код предложения по значениям этих параметров. Чтобы активировать предложения для определенного параметра:
Раскомментируйте код, определяющий функцию.
Удалите имя параметра, включая <>
персонажи.
Пауза, чтобы разрешить отображение предложений кода.
Если предложения не отображаются, проверьте, что заданы
файл указан в пути MATLAB.libName
.mlx
DIRECTION
ПараметрВ C++ аргументы указателя могут использоваться, чтобы передать и вернуть данные от функции. Используйте DIRECTION
параметр, чтобы указать, является ли аргумент входным, только выходным или изменяемым входным параметром только для чтения.
The DIRECTION
параметр имеет одно из следующих значений:
"input"
- Только входной параметр
Если для передачи данных в функцию используется аргумент указателя, то он должен появиться как входной параметр в сигнатуре MATLAB.
The DIRECTION
значение для параметров C-string должно быть входным.
"output"
- Только выходной аргумент
Если для извлечения данных из функции используется аргумент-указатель, то он должен появиться как выходной аргумент в сигнатуре MATLAB.
"inputoutput"
- Входной и выходной аргумент
Если аргумент указателя используется как для передачи, так и для возврата данных, то он должен отображаться как входной параметр и выходной аргумент.
Примечание
Аргументы по умолчанию с направлением, заданным как OUT
не поддерживаются. Определите их с помощью DIRECTION
как "input"
или "inputoutput"
в файле MLX.
Например, предположим, что функция C++ passData
имеет следующую подпись. Аргумент data
может быть входом в функцию, возврат значением функции или входом, который функция изменяет и возвращает. Документация функции подсказывает, как функция использует аргумент data
.
void passData(double *data);
Принимая data
является скалярным двойным значением, в этой таблице показана сигнатура MATLAB, основанная на ее роли.
Роль C++ для data | Подпись MATLAB |
---|---|
Входные данные только для |
% Set DIRECTION = "input"
passData(data)
|
Возвращает данные только из |
% Set DIRECTION = "output"
[data] = passData()
|
Входные и выходные данные для |
% Set DIRECTION = "inputoutput"
[data] = passData(data)
|
SHAPE
ПараметрВ C++ аргументы указателя используются как для скалярных данных, так и для данных массива. Чтобы использовать указатель в качестве массива, для преобразования массива между C++ и MATLAB требуется информация о размерности. The SHAPE
параметр задает размерности для указателя мыши.
Примечание
Эти типы указателей могут использоваться только в качестве скаляров. Задайте SHAPE как 1
в файле MLX.
Указатели, представляющие массивы объектов класса C++
Указатели на несоответствующие примитивные массивы, возвращенные из функции
Следующие примеры конструкций, заданных в выборке cppUseCases.hpp
файл заголовка показывает, как задать форму аргумента. В этих таблицах описания функций в столбце C++ Signature and Role of Pointer основаны на предполагаемых знаниях аргументов. Сама подпись не предоставляет эту информацию.
Чтобы просмотреть cppUseCases.hpp
заголовочный файл и его сгенерированный файл определения, см. Выборку файла определения библиотеки C++.
Подпись C++ и роль указателя | defineArgument Значения |
---|---|
Вход этой функции является скалярным указателем void readScalarPtr(int const * in) | Для получения аргументов defineArgument(readScalarPtrDefinition, "in", ... "int32", "input", 1); |
Вход этой функции является скалярным указателем на класс void readScalarPtr(ns::MyClass2 const * in) | Для получения аргументов defineArgument(readScalarPtrDefinition, "in", ... "clib.cppUseCases.ns.MyClass2", "input", 1); |
Подпись C++ | defineArgument Значения |
---|---|
Вход в эту функцию является указателем на целочисленный массив длины void readMatrix1DPtr(int const * mat, size_t m) | Для получения аргументов defineArgument(readMatrix1DPtrDefinition, "mat", ... "int32", "input", "m"); |
Вход этой функции является указателем на массив фиксированной длины void readMatrix1DPtrFixedSize(int const * mat) | Для получения аргументов defineArgument(readMatrix1DPtrFixedSizeDefinition, ... "mat", "int32", "input", 5); |
Вход этой функции является указателем на двумерную целочисленную матрицу void readMatrix2DPtr(int const * mat, size_t m, size_t n) | Для получения аргументов defineArgument(readMatrix2DPtrDefinition, "mat", ... "int32", "input", ["m","n"]); |
Вход этой функции является указателем на двумерную матрицу void readMatrix2DPtrFixedSize(int const * mat) | Для получения аргументов defineArgument(readMatrix2DPtrFixedSizeDefinition, ... "mat", "int32", "input", 6); |
Вход этой функции является указателем на трехмерную матрицу void readMatrix3DPtr(int const * mat, size_t m, size_t n, size_t p) | Для получения аргументов defineArgument(readMatrix3DPtrDefinition, "mat", ... "int32", "input", ["m","n","p"]); |
Подпись C++ | defineArgument Значения |
---|---|
Вход этой функции является одномерным массивом void readMatrix1DArr(int const [] mat, size_t len) | Для получения аргументов defineArgument(readMatrix1DArrDefinition, "mat", ... "int32", "input", "len"); |
Подпись C++ | defineArgument Значения |
---|---|
Вход этой функции является указателем на массив длин int const * getRandomValues(size_t len) | Для значения возврата defineOutput(getRandomValuesDefinition, "RetVal", ... "int32", "len"); |
Выходным аргументом этой функции является указатель на массив фиксированной длины. int const * getRandomValuesFixedSize() | Для значения возврата defineOutput(getRandomValuesFixedSizeDefinition, ... "RetVal", "int32", 5); |
Подпись C++ | defineArgument Значения |
---|---|
Вход в эту функцию является указателем на класс double addClassByPtr(ns::MyClass2 const * myc2) | Для defineArgument(addClassByPtrDefinition, "myc2", ... "clib.cppUseCases.ns.MyClass2", "input", 1); |
Вход в эту функцию является указателем на класс void updateClassByPtr(ns::MyClass2 * myc2, double a, short b, long c) | Для получения аргументов defineArgument(updateClassByPtrDefinition, "myc2", ... "clib.cppUseCases.ns.MyClass2", "input", 1); |
Вход в эту функцию является указателем на класс void readClassByPtr(ns::MyClass2 * myc2) | Для получения аргументов defineArgument(readClassByPtrDefinition, "myc2", ... "clib.cppUseCases.ns.MyClass2", "input", 1); |
Вход в эту функцию является указателем на класс void fillClassByPtr(ns::MyClass2 * myc2, double a, short b, long c) | Для получения аргументов defineArgument(fillClassByPtrDefinition, "myc2", ... "clib.cppUseCases.ns.MyClass2", "input", 1); |
Подпись C++ | defineArgument Значения |
---|---|
Вход в эту функцию является указателем на целый вектор длины void updateMatrix1DPtrByX(int * mat, size_t len, int x) | Для получения аргументов defineArgument(updateMatrix1DPtrByXDefinition, ... "mat", "int32", "inputoutput", "len"); |
Вход в эту функцию является ссылкой на целочисленный массив длины void updateMatrix1DArrByX(int [] mat, size_t len, int x) | Для получения аргументов defineArgument(updateMatrix1DArrByXDefinition, ... "mat", "int32", "inputoutput", "len"); |
Вход в эту функцию является указателем на целый вектор длины int addValuesByPtr(int * mat, size_t len) | Для получения аргументов defineArgument(addValuesByPtrDefinition, "mat", ... "int32", "input", "len"); |
Вход в эту функцию является ссылкой на целочисленный массив длины int addValuesByArr(int [] mat, size_t len) | Для получения аргументов defineArgument(addValuesByArrDefinition, ... "mat", "int32", "input", "len"); |
Эта функция создает целочисленный вектор длины void fillRandomValuesToPtr(int * mat, size_t len) | Для получения аргументов defineArgument(fillRandomValuesToPtrDefinition, ... "mat", "int32", "output", "len"); |
Эта функция создает целочисленный вектор длины void fillRandomValuesToArr(int [] mat, size_t len) | Для получения аргументов defineArgument(fillRandomValuesToArrDefinition, ... "mat", "int32", "output", "len"); |
Подпись C++ | defineArgument Значения |
---|---|
Входной вход этой функции представляет собой строку в стиле С. char const * getStringCopy(char const * str) | Для получения аргументов defineArgument(getStringCopyDefinition, "str", ... "string", "input", "nullTerminated"); |
Значение возврата для этой функции является строкой. char const * getStringCopy(char const * str) | Для обратного значения defineOutput(getStringCopyDefinition, "RetVal", "string", ... "nullTerminated"); |
Входом для этой функции является строка, заданная длиной void readCharArray(char const * chArray, size_t len) | Для получения аргументов defineArgument(readCharArrayDefinition, "chArray", ... "char", "input", "len"); |
Вход в эту функцию является массивом типов void readInt8Array(char const * int8Array, size_t len) | Для получения аргументов defineArgument(readInt8ArrayDefinition, "int8Array", ... "int8", "input", "len"); |
Значение возврата для этой функции является скаляром символов. char const * getRandomCharScalar() | Для обратного значения defineOutput(getRandomCharScalarDefinition, ... "RetVal", "char", 1); |
Тип возврата значения для этой функции char const * getRandomInt8Scalar() | Для обратного значения defineOutput(getRandomInt8ScalarDefinition, ... "RetVal", "int8", 1); |
Эта функция обновляет входной параметр void updateCharArray(char* chArray, size_t len) | Для получения аргументов defineArgument(updateCharArrayDefinition, ... "chArray", "int8", "inputoutput", "len"); |
Вход этих функций является массивом C-строк размера void readCStrArray(char** strs, int numStrs); void readCStrArray(char* strs[], int numStrs); | Для получения аргументов defineArgument(readCStrArrayDefinition, ... "strs", "string", "input", ["numStrs", "nullTerminated"]) |
Входной параметр этих функций является const массива C-строки размера void readConstCStrArray (const char** strs, int numStrs); void readConstCStrArray (const char* strs[], int numStrs); | Звонить defineArgument(readConstCStrArrayDefinition, ... "strs", "string", "input", ["numStrs", "nullTerminated"]) |
Вход этой функции является массивом фиксированного размера С-строкой. void readFixedCStrArray (char* strs[5]); | Для получения аргументов defineArgument(readFixedCStrArrayDefinition, ... "strs", "string", "input", [5, "nullTerminated"]) |
Вход этой функции является массивом const с C-строкой фиксированного размера. void readConstCFixedStrArray (const char* strs[5]); | Звонить defineArgument(readConstFixedCStrArrayDefinition, ... "strs", "string", "input", [5, "nullTerminated"]) |
Подпись C++ | defineArgument Значения |
---|---|
Вход в эту функцию является указателем на typedef void useTypedefPtr(intDataPtr input1)
typedef int16_t intData; typedef intData * intDataPtr; | Для получения аргументов defineArgument(useTypedefPtrDefinition, "input1", ... "int16", "input", 1); |
MLTYPE
ПараметрMATLAB автоматически преобразует типы C++ в типы MATLAB, как описано в C++, в Тип данных MATLAB Отображения. Если тип C++ для аргумента является строкой, используйте эти опции, чтобы выбрать значения для MLTYPE
и SHAPE
аргументы.
Тип C++ | MLTYPE | Опции для SHAPE |
---|---|---|
char* |
| Скалярное значение |
char** char*[] |
| вектор |
const char* |
| Скалярное значение |
|
| |
const char** const char*[] |
| Скалярное значение |
|
|