Интерфейс 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.
output
— Выходной аргумент только
Если аргумент указателя используется, чтобы получить данные от функции, то это должно появиться как выходной аргумент в подписи MATLAB.
inputoutput
— Аргумент ввода и вывода
Если аргумент указателя используется, чтобы и передать и возвратить данные, то это должно появиться и как входной параметр и как выходной аргумент.
Примечание
Параметры по умолчанию с направлением, заданным как OUT
не поддерживаются. Задайте их с НАПРАВЛЕНИЕМ как 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); |
Вход, чтобы функционировать void readMatrix3DPtr(int const * mat, size_t m, size_t n, size_t p) | Для аргумента defineArgument(readMatrix3DPtrDefinition, "mat", ... "int32", "input", ["m","n","p"]); |
Задайте аргумент Array
Подпись C++ | defineArgument Значения |
---|---|
Вход, чтобы функционировать void readMatrix1DArr(int const [] mat, size_t len) | Для аргумента defineArgument(readMatrix1DArrDefinition, "mat", ... "int32", "input", "len"); |
Выходной Define аргумент указателя
Подпись 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(getStringCopy, "RetVal", "char", 1); |
Вход, чтобы функционировать 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++ | defineArgument Значения |
---|---|
Вход, чтобы функционировать void useTypedefPtr(intDataPtr input1)
typedef int16_t intData; typedef intData * intDataPtr; | Для аргумента defineArgument(useTypedefPtrDefinition, "input1", ... "int16", "input", 1); |
MLTYPE
ПараметрMATLAB автоматически преобразует типы C++ в типы MATLAB, как описано в MATLAB к Отображению Типа данных C++. Если тип C++ для аргумента является строкой, то используйте эти опции, чтобы выбрать значения для MLTYPE
и SHAPE
аргументы.
Тип C++ | MLTYPE | Опции для SHAPE |
---|---|---|
char * |
| Скалярное значение |
const char * |
| Скалярное значение |
|
|