Pass std::vector Parameter
When you pass a clib array directly as a parameter to a C++ function that expects an
std::vector input, MATLAB® converts the elements and the size of the clib array to an
std::vector argument. The number of dimensions of the passed
array must match the expected dimensions of the parameter.
Display Help for Interface
Suppose that you have an interface with the definition for a function
fcn. To run this example, follow the instructions in Build Interface for std::vector Example to
generate a MATLAB interface named libvector.
When you display help for libvector, you see that function
fcn takes an std::vector of type
double.
help clib.libvector.fcnfcn - clib.libvector.fcn Representation of C++ function fcn.
clib.libvector.fcn(doubleVec)
Input Arguments
doubleVec vector clib.array.libvector.DoubleThe corresponding MATLAB type is a vector of clib.array.libvector.Double
with elements of type clib.libvector.Double .
Call Function in MATLAB
Call clibArray to create a 1-D clib array of type
clib.libvector.Double and pass it to
fcn.
arr1d = clibArray("clib.libvector.Double",[3]);
arr1d.Dimensionsans = 3
clib.libvector.fcn(arr1d)
However, if you pass a 2-D array, MATLAB returns an error because the dimensions do not match.
arr2d = clibArray("clib.libvector.Double",[2 3]);
arr2d.Dimensionsans = 1×2
2 3clib.libvector.fcn(arr2d)
Error using clib.libvector.fcn No method 'clib.libvector.fcn' with matching signature found.
Build Interface for std::vector Example
This C++ code defines a function that takes an std::vector of
type double.
#include <vector>
void fcn(std::vector<double> doubleVec){};To run the example, save this code in a header file named
vector.hpp, then generate a MATLAB interface named libvector following the
instructions in Header-Only HPP File.
| Library Artifacts | MATLAB Interface libname | MATLAB Help |
|---|---|---|
Header file |
|
|