Main Content

Create MATLAB Array of C++ Objects

To create a MATLAB® object that represents C++ native arrays or std::vector types, call the MATLAB clibArray function.

In MATLAB, you refer to this class as clib.libname.MyClass. Create an array of five MyClass objects.

The type of the MATLAB array myclassArray is clib.array.libname.MyClass. To access an element of myclassArray, use MATLAB indexing. For example, access the first element.

e = myclassArray(1)

The element type is clib.libname.MyClass.

Alternatively, if the element type is a fundamental type, a user-defined class with a default constructor, or a standard string type, call the clib.array constructor.

To create an array from a fundamental type, you must know the corresponding element type. For mapping information, see the Vector Integer Types and Floating Point Types tables in C++ to MATLAB Data Type Mapping. For example, if the C++ type is std::vector<int32_t>, then the MATLAB element type is clib.libname.Int. Create an array with five clib.libname.Int elements.

myIntArray = clib.array.libname.Int(5)

Create an array of five elements of the same user-defined class.

myclassArray = clib.array.libname.MyClass(5)

To create an array from a standard string type, see the std::vector<T> String Types table for element type information. For example, if the C++ type is std::vector<std::string>, then the MATLAB element type is clib.libname.std.String. Create an array with five clib.libname.std.String elements.

myStringArray = clib.array.libname.std.String(5)

Convert MATLAB Array to C++ Array Object

You can use an existing MATLAB array as a C++ array object. For example, suppose that you have a MATLAB interface libname. Convert a MATLAB array of double values to a C++ array object by using the clibConvertArray function.

a = [1 2 3];
arr = clibConvertArray("clib.libname.Double",a);
class(arr)
  'clib.array.libname.Double'

Treat C++ Native Arrays of Fundamental Types as MATLAB Fundamental Types

By default, MATLAB represents C++ native arrays of fundamental types with the MATLAB clib.array types. If you need to preserve fundamental MATLAB array types with outputs, then build your MATLAB interface to the C++ library with the ReturnCArrays name-value argument set to false. For more information, see clibgen.generateLibraryDefinition.

Note

Saving C++ objects into a MAT-file is not supported.

Note

You cannot create an array of C++ objects using square brackets.

See Also

| |