Интерфейс 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 * |
| Скалярное значение |
|
|