Интерфейс MATLAB® автоматически преобразует подписи функции C++ в подписи функции MATLAB. Однако некоторые построения языка C++ не имеют уникальных соответствий на языке MATLAB. Чтобы включать эту функциональность в интерфейс, отредактируйте .mlx
файл определения и замена <DIRECTION>
, <SHAPE>
, и <MLTYPE>
параметры с недостающей информацией. Эти параметры используются для следующих случаев.
Чтобы задать, является ли аргумент указателя входом только для чтения, выход только или модифицируемый входной параметр, использует параметр НАПРАВЛЕНИЯ.
Если аргумент указателя используется для данных массива, то информация о размерности требуется, чтобы преобразовывать массив между C++ и MATLAB. Используйте параметр SHAPE, чтобы указать эту информацию.
C++ имеет много типов, представляющих аргументы строки. Вы можете должны быть задать MLTYPE и значения SHAPE так, чтобы MATLAB мог правильно преобразовать тип C++ в string
MATLAB ввод.
MATLAB предлагает предложения кода для значений этих параметров. Активировать предложения для определенного параметра:
Не прокомментируйте код, задающий функцию.
Удалите название параметра, включая <>
'characters'.
Сделайте паузу, чтобы позволить предложениям кода отображаться.
Если предложения не появляются, проверяйте что define
файл находится на вашем пути MATLAB.libName
.mlx
DIRECTION
ПараметрНа C++ аргументы указателя могут использоваться, чтобы передать и возвратить данные из функции. Используйте DIRECTION
параметр, чтобы задать, является ли аргумент входом только для чтения, выход только или модифицируемый входной параметр.
DIRECTION
параметр имеет одно из этих значений:
"input"
— Входной параметр только
Если аргумент указателя используется, чтобы передать данные функции, то это должно появиться как входной параметр в подписи MATLAB.
DIRECTION
значение для параметров струны до должно быть введено.
"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. SHAPE
параметр задает размерности для указателя.
Примечание
Эти типы указателей могут только использоваться в качестве скаляров. Задайте SHAPE как 1
в файле MLX.
Указатели, представляющие массивы объектов класса C++
Указатели на неconst примитивные массивы, возвращенные в функцию
Следующие примеры построений заданы в демонстрационном 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); |
Вход к этой функции является указателем на 3D матричный 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 Значения |
---|---|
Вход к этой функции является строкой C-стиля. 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"); |
Вход к этим функциям является массивом струны до размера void readCStrArray(char** strs, int numStrs); void readCStrArray(char* strs[], int numStrs); | Для аргумента defineArgument(readCStrArrayDefinition, ... "strs", "string", "input", ["numStrs", "nullTerminated"]) |
Вход к этим функциям является массивом const струны до размера 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 фиксированного размера струны до. void readConstCFixedStrArray (const char* strs[5]); | Вызвать defineArgument(readConstFixedCStrArrayDefinition, ... "strs", "string", "input", [5, "nullTerminated"]) |
Подпись C++ | defineArgument Значения |
---|---|
Вход к этой функции является указателем на определение типа 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*[] |
| Скалярное значение |
|
|