MATLAB ® обеспечивает интерфейс ,clib.array, который охватывает собственные массивы C++ и std::vector типы. Термин массив clib относится к представлению MATLAB этих типов C++.
Массив MATLAB clib определяется только в том случае, если соответствующий собственный массив C++ или std::vector используется поддерживаемыми конструкциями C++ - входными и выходными аргументами функции и членами данных. Указанные заголовки должны содержать определение типа элемента. Конструкция должна поддерживаться MATLAB и не удаляться при построении интерфейса.
Создание объекта MATLAB, представляющего собственные массивы C++ или std::vector типы, вызовите MATLAB clibArray функция. Например, предположим, что библиотека libname определяет класс myclass. В MATLAB этот класс называется clib.libname.myclass. Создание массива из пяти myclass используйте следующий синтаксис:
myclassArray = clibArray('clib.libname.myclass',5);Тип массива MATLAB myclassArray является clib.array.libname.myclass. Доступ к элементу myclassArrayиспользуйте индексирование MATLAB. Например, для доступа к первому элементу используйте следующий синтаксис:
e = myclassArray(1)
Тип элемента: clib.libname.myclass.
Кроме того, если тип элемента является фундаментальным типом, определяемым пользователем классом с конструктором по умолчанию или стандартным строковым типом, вызовите clib.array конструктор.
Чтобы создать массив из пяти элементов для определяемого пользователем класса, введите:
myclassArray = clib.array.libname.myclass(5)
Чтобы создать массив из фундаментального типа, необходимо знать тип элемента. Дополнительные сведения см. в разделе std:: vector < T > Целочисленные типы иstd::vector<T>
Таблицы типов с плавающей запятой в сопоставлении типов данных C++ и MATLAB. Например, если тип C++ std::vector<int32_t>, то тип элемента MATLAB clib.libname.Int. Чтобы создать массив с пятью элементами, введите:
myIntArray = clib.array.libname.Int(5)
Сведения о создании массива из стандартного строкового типа см. в таблице std:: vector < T > String Types. Например, если тип C++std::vector<std::string>, то тип элемента MATLAB clib.libname.std.String. Чтобы создать массив с пятью элементами, введите:
myStringArray = clib.array.libname.std.String(5)
Примечание
Сохранение объектов C++ в MAT-файле не поддерживается.
Примечание
Невозможно создать массив объектов C++ в квадратных скобках.
Существующий массив MATLAB можно использовать в качестве объекта массива C++. Позвоните в clibConvertArray функция.
Массивы MATLAB, созданные с помощью clibArray или clibConvertArray имеют эти свойства.
Собственность | Напечатать | Доступ | Описание |
|---|---|---|---|
| double vector | только для чтения | Размеры массива C++ |
| logical scalar | только для чтения |
|
Массивы MATLAB, созданные с помощью clibArray или clibConvertArray имеют эти методы.
Метод | Подпись | Описание |
|---|---|---|
| append([element]) | Добавьте дополнительно указанный элемент в конец массива. Для примитивного массива MATLAB clib, если входной аргумент отсутствует, добавляется нулевое значение. Для массива MATLAB clib типа класса, если входной аргумент отсутствует, добавляется конструктор по умолчанию типа класса. При удалении конструктора по умолчанию типа класса возникает ошибка во время выполнения. |
| removeLast | Удалите последний элемент массива. Если массив MATLAB clib пуст, возникает ошибка во время выполнения. |
| double | Преобразовать в двойную точность. |
|
| Преобразовать в |
|
| Преобразовать в |
|
| Преобразовать в |
|
| Преобразовать в |
|
| Преобразовать в |
|
| Преобразовать в |
|
| Преобразовать в |
|
| Преобразовать в |
| logical | Преобразование числовых значений в логические. |
По умолчанию MATLAB представляет собственные массивы C++ фундаментальных типов с MATLAB clib.array типы. Если необходимо сохранить фундаментальные типы массивов MATLAB с выходами, создайте интерфейс с помощью ReturnCArrays аргумент имеет значение false. Дополнительные сведения см. в разделе clibgen.generateLibraryDefinition.
Память для массивов MATLAB, созданных с помощью clibArray или clibConvertArray принадлежит MATLAB. Для освобождения памяти вызовите clibRelease.
clibArray | clibConvertArray | clibRelease