Pass Parameter by Reference
You can pass a clib array to a C++ function that modifies the input data and returns the data to MATLAB®. Then convert the data from the clib array to a MATLAB array using one of the methods listed in MATLAB C++ Object Array Methods.
Display Help for Interface
Suppose that you have an interface with the overloaded function
getData. To run this example, follow the instructions in
Build Interface for Pass by Reference Example to
generate a MATLAB interface named libByRef.
When you display help for libByRef, you see that it contains
two functions named getData.
help clib.libByRefFunctions contained in clib.libByRef: getData - clib.libByRef.getData Representation of C++ function getData. getData - clib.libByRef.getData Representation of C++ function getData.
To see the input argument types, display help for the getData
functions.
help clib.libByRef.getDatagetData - clib.libByRef.getData Representation of C++ function getData.
clib.libByRef.getData(arr)
Input Arguments
arr vector clib.array.libByRef.Int
clib.libByRef.getData Representation of C++ function getData.
clib.libByRef.getData(arr)
Input Arguments
arr vector clib.array.libByRef.Char The function accepts a vector of type clib.array.libByRef.Int
or clib.array.libByRef.Char.
Use in MATLAB
Call the getData function to populate a numeric clib array of
type int32_t and convert it to a MATLAB
int32 array.
narr = clib.array.libByRef.Int(3); clib.libByRef.getData(narr) int32(narr)
ans = 1×3 int32 row vector 2 4 5
Now call the getData function to populate a character array and
convert it for use in MATLAB.
carr = clib.array.libByRef.Char(1); clib.libByRef.getData(carr); char(carr.int8)
ans = 'MATLAB '
Build Interface for Pass by Reference Example
This C++ header file defines functions that populate C++ arrays with data of type
int32_t and char.
#include <cstdint>
#include <vector>
void getData(std::vector<int32_t>& arr) {
int32_t data [] = {2, 4, 5};
arr.clear();
for (auto c : data) {
arr.push_back(c);
}
}
void getData(std::vector<char>& arr) {
char data [] = {'M', 'A', 'T', 'L', 'A', 'B', '\0'};
arr.clear();
for (auto c : data) {
arr.push_back(c);
}
}To run the example, save this code in a header file named
getData.hpp, then generate a MATLAB interface named libByRef following the instructions
in Header-Only HPP File.
| Library Artifacts | MATLAB Interface libname | MATLAB Help |
|---|---|---|
Header file |
|
|