主要内容

matlab:: data:: ArrayFactory

c++类创建数组

描述

使用ArrayFactory创建matlab::数据::数组对象。

类细节

名称空间:

matlab:数据

包括:

ArrayFactory.hpp

构造函数

默认构造函数

ArrayFactory ()

抛出

matlab:: data:: FailedToLoadLibMatlabDataArrayException

未加载具体实现。

析构函数

~ ArrayFactory ()

成员函数

createArray

模板 TypedArray createArray(ArrayDimensions dimms)
模板 TypedArray createArray(ArrayDimensions dimms, ItType begin, ItType end)
模板 TypedArray createArray(ArrayDimensions dimms, const T* const begin, const T* const end)
模板 TypedArray createArray(ArrayDimensions dimms, std::initializer_list data)
描述

创建一个TypedArray < T >给定的尺寸。如果指定的,createArray用数据填充数组。复制的数据必须按列-主顺序排列。

模板参数
  • ItType-迭代器类型,指定为std::迭代器

  • T-元素类型,指定为以下c++数据类型之一。

    保龄球

    int8_t

    int16_t

    int32_t

    int64_t

    uint8_t

    uint16_t

    uint32_t

    uint64_t

    浮动

    char16_t

    matlab::数据::字符串 std::复杂的双> < std::复杂的<飘> 复杂的< int8_t std:: > 复杂的< uint8_t std:: > 复杂的< int16_t std:: >
    复杂的< uint16_t std:: > std::复杂的< int32_t > 复杂的< uint32_t std:: > 复杂的< int64_t std:: > 复杂的< uint64_t std:: > matlab:: data:: MATLABString

    创建。的数组matlab::数据::对象元素类型,使用TypedArray createArray(ArrayDimensions dimms, ItType begin, ItType end)语法。

参数

ArrayDimensions变暗

数组的尺寸。

ItType开始

ItType结束

开始和结束用户提供的数据。的value_type的值确定数据类型。

const T* const begin

const T* const end

开始和结束用户提供的数据指定为c风格指针。该语法支持所有基本类型、万博1manbetx复杂类型和字符串类型。

std:: initializer_list < T >

包含数据的初始化列表。

抛出

matlab: OutOfMemoryException

无法分配数组。

matlab:: data:: NumberOfElementsExceedsMaximumException

元素个数大于size_t

matlab:: data:: InvalidArrayTypeException

输入类型的matlab:: data:: ObjectArray不匹配的类型TypedArray < T >

createScalar

模板 TypedArray createScalar(const T val)
TypedArray createScalar(const String val)
TypedArray createScalar(const std:: String val)
ObjectArray createScalar(const Object& val);
描述

创建一个标量TypedArray < T >用给定的值。此方法支持算术类型、复杂万博1manbetx类型和字符串类型。

参数

const T瓦尔

要插入到标量中的值。

std:: string参数,如果瓦尔是7位ASCII数据,然后该方法将其转换为UTF16。

常量字符串瓦尔

const std:: string瓦尔

常量对象瓦尔

抛出

matlab: OutOfMemoryException

无法分配数组。

matlab:: data:: NonAsciiCharInInputDataException

输入是std:: string,包含非ascii字符。

例子
#include "MatlabDataArray.hpp" int main() {matlab::data::ArrayFactory factory;//创建一个包含两个标量值的向量std::vector args({factory.createScalar(100), factory.createScalar(60)});返回0;}

createCellArray

CellArray createCellArray (ArrayDimensions dim)
模板< typename…Targs> CellArray createCellArray(ArrayDimensions dims, Targs... data)
描述

创建一个CellArray与指定的数据.数据按列大顺序排列。

模板参数

目标…

可变模板:

  • 算术类型

  • 复杂类型

  • matlab::数据::字符串

  • std:: string

  • matlab::数据::数组

参数

ArrayDimensions变暗

单元格数组的尺寸。

目标……数据

要插入单元格数组的元素,它们被指定为基本复合类型、字符串或数组

抛出

matlab: OutOfMemoryException

无法分配数组。

matlab:: data:: NonAsciiCharInInputDataException

输入是std:: string,包含非ascii字符。

matlab:: data:: NumberOfElementsExceedsMaximumException

元素个数大于size_t

例子
#include "MatlabDataArray.hpp" int main(){使用命名空间matlab::data;ArrayFactory f;CellArray myArray = f.createCellArray({1,2}, f.createCharArray("MATLAB CellArray "), f.createArray({2,2}, {1.2, 2.2, 3.2, 4.2});返回0;}

createCharArray

CharArray createCharArray (String str)
CharArray createCharArray (std:: string str)
描述

创建一个1 xnCharArray从指定的输入,其中n是字符串长度。

参数

matlab::数据::字符串str

要填充到数组中的数据。

std:: string str

抛出

matlab: OutOfMemoryException

无法分配数组。

matlab:: data:: NonAsciiCharInInputDataException

输入是std:: string,包含非ascii字符。

例子
#include "MatlabDataArray.hpp" int main(){使用命名空间matlab::data;ArrayFactory工厂;CharArray A = factory。createCharArray("This is a char array"); return 0; }

createStructArray

StructArray createStructArray(ArrayDimensions dimms, std::vector fieldNames)
描述

创建一个StructArray使用给定的维度和字段名。

参数

ArrayDimensions变暗

数组的尺寸。

std::向量< std:: string >字段名

结构的字段名的向量。

抛出

matlab: OutOfMemoryException

无法分配数组。

matlab:: data:: DuplicateFieldNameInStructArrayException

指定的字段名称重复。

matlab:: data:: NumberOfElementsExceedsMaximumException

元素个数大于size_t

例子
#include "MatlabDataArray.hpp" int main(){使用命名空间matlab::data;ArrayFactory f;/ /创建StructArray相当于MATLAB结构s: / / s =结构(loc,{“东”、“西”},“数据”,{[1,2,3],[4。5。6。7。,8.]}) StructArray S = f.createStructArray({ 1,2 }, { "loc", "data" }); S[0]["loc"] = f.createCharArray("east"); S[0]["data"] = f.createArray({ 1, 3 }, { 1, 2, 3 }); S[1]["loc"] = f.createCharArray("west"); S[1]["data"] = f.createArray({ 1, 5 }, { 4., 5., 6., 7., 8. }); // Access the value defined by the MATLAB statement: // s(1).data Reference val = S[0]["data"]; return 0; }

createEnumArray

枚举数组createEnumArray(ArrayDimensions dim, std::string className, std::vector enum)
EnumArray createEnumArray(ArrayDimensions dims, std::string className)
描述

创建一个EnumArray类型的类名称,这是一个已定义的类。如果指定,该方法将使用枚举名称列表初始化数组。

参数

ArrayDimensions变暗

数组的尺寸。

std:: string类名

枚举数组的类名。

std::向量< std:: string >枚举

枚举名称的列表。

抛出

matlab: OutOfMemoryException

无法分配数组。

matlab:: data:: MustSpecifyClassNameException

未指定类名。

matlab:: data:: WrongNumberOfEnumsSuppliedException

提供的枚举数错误。

matlab:: data:: NumberOfElementsExceedsMaximumException

元素个数大于size_t

例子
#include  int main() {using namespace matlab::data;ArrayFactory f;auto blue = f.e onenumarray ({1,1}, "TextColor", {" blue "});//创建一个参数vector std::vector args({f.c atechararray ("My text"), std::move(blue)});返回0;}

createSparseArray

模板 SparseArray createSparseArray(ArrayDimensions dimms, size_t nnz, buffer_ptr_t data, buffer_ptr_t rows, buffer_ptr_t cols)
描述

创建一个SparseArray < T >——- - - - - -关口维度。稀疏数组只能有两个维度。该方法不复制缓冲区,而数组获得内存的所有权。

模板参数

T

元素类型,指定为保龄球,或std::复杂的双> <

参数

ArrayDimensions变暗

数组的尺寸。

size_t nnz

非零元素的个数。

buffer_ptr_t < T >数据

包含非零元素的缓冲区。

buffer_ptr_t < size_t >行

包含每个元素的行值的缓冲区。

buffer_ptr_t < size_t >关口

包含每个元素的列值的缓冲区。

抛出

matlab: OutOfMemoryException

无法分配数组。

matlab:: data:: InvalidDimensionsInSparseArrayException

超过两个指定的维度。

matlab:: data:: NumberOfElementsExceedsMaximumException

元素个数大于size_t

例子
#include "MatlabDataArray.hpp" int main() {std::vector data = {3.5, 12.98, 21.76};Std::vector rows = {0,0,1};Std::vector cols = {0,4,8};Size_t NNZ = 3;matlab::数据::ArrayFactory工厂;auto data_p = factory.createBuffer(nnz);自动row_p = factory.createBuffer(nnz);自动cols_p = factory.createBuffer(nnz);double* dataPtr = data_p.get();size_t* rowsPtr = rows_p.get(); size_t* colsPtr = cols_p.get(); std::for_each(data.begin(), data.end(), [&](const double& e) { *(dataPtr++) = e; }); std::for_each(rows.begin(), rows.end(), [&](const size_t& e) { *(rowsPtr++) = e; }); std::for_each(cols.begin(), cols.end(), [&](const size_t& e) { *(colsPtr++) = e; }); matlab::data::SparseArray arr = factory.createSparseArray({ 2,9 }, nnz, std::move(data_p), std::move(rows_p), std::move(cols_p)); return 0; }

createEmptyArray

数组createEmptyArray ()
描述

创建一个空数组不含元素。

返回

数组

空数组。

抛出

matlab: OutOfMemoryException

无法分配数组。

createBuffer

模板 buffer_ptr_t createBuffer(size_t numberOfElements)
描述

创建一个未初始化的缓冲区以传递给createArrayFromBuffer方法。

模板参数

T

原始类型。

参数

size_t numberOfElements

元素的数量,而不是实际的缓冲区大小。

返回

buffer_ptr_t < T >

包含缓冲区的Unique_ptr。

抛出

matlab: OutOfMemoryException

无法分配数组。

createArrayFromBuffer

模板 TypedArray createArrayFromBuffer(ArrayDimensions dimms, buffer_ptr_t buffer, MemoryLayout MemoryLayout = MemoryLayout::COLUMN_MAJOR)
描述

创建一个TypedArray < T >使用给定的缓冲区。

模板参数

T

原始类型。

参数

ArrayDimensions变暗

数组的尺寸。

buffer_ptr_t < T >缓冲区

包含数据的缓冲区。缓冲区没有被复制。的TypedArray < T >对象获得缓冲区的所有权。

MemoryLayout MemoryLayout

输入缓冲区和创建的数组的内存布局,指定为MemoryLayout: COLUMN_MAJOR或者是MemoryLayout: ROW_MAJOR.默认的布局是COLUMN_MAJOR

当使用matlab::数据::TypedIterator < T >创建的数组createArrayFromBufferMemoryLayout影响返回元素的顺序。

可选参数。

抛出

matlab: OutOfMemoryException

无法分配数组。

matlab:: data:: InvalidArrayTypeException

缓冲区类型无效。

matlab:: data:: InvalidMemoryLayoutException

无效的内存布局。

matlab:: data:: InvalidDimensionsInRowMajorArrayException

尺寸不是有效的。这个异常发生在用MATLAB创建的数组®如果行主数组不是二维的,则为R2019a和R2019b。

matlab:: data:: NumberOfElementsExceedsMaximumException

元素个数大于size_t

介绍了R2017b