Map MATLAB Classes and Functions to C++
This guide details how MATLAB® classes and functions map to their corresponding C++ classes and
functions. Through the lens of an example involving MATLAB classes named MyPosition
and
MyRectangle
that are part of package
+shapes
, and a MATLAB function called calculatearea
, we explore the C++
header file (libshapesv2.hpp
) generated by the compiler.build.cppSharedLibrary
function that forms the interface
between MATLAB and C++.
At a high level:
MATLAB data types are mapped to C++ data types based on type specification in
arguments
andproperties
blocks.MATLAB packages are mapped to C++ namespaces of the same name.
MATLAB classes are mapped to C++ classes of the same name.
Public methods of MATLAB classes maps to public C++ methods of the same name.
Properties of a MATLAB class are replicated as getter and setter functions in the C++ class. The property names are prepended with
get
andset
to form the getter and setter functions.
Header Mapping Excerpt
classdef MyRectangle properties UpperLeft (1,1) shapes.MyPosition LowerRight (1,1) shapes.MyPosition end methods function R = enlarge(R, n) arguments R (1,1) shapes.MyRectangle n (1,1) double {mustBeReal} end % code end function R = show(R) arguments R (1,1) shapes.MyRectangle end % code end end end |
|
MATLAB Package, Classes, and Function
+shapes
This is a MATLAB package containing two classes: MyPosition
and MyRectangle
.
MyPosition
This class is part of the shapes
package and represents
a position in two-dimensional space. It contains two properties:
X
and Y
, both are real
double
values.
MyRectangle
This class is also part of the shapes
package and it
represents a rectangle. It contains two properties:
UpperLeft
and LowerRight
which are
instances of the shapes.MyPosition
class. The class also
has two methods: enlarge
and show
. The
enlarge
method enlarges the rectangle by a factor
n
, adjusting the UpperLeft
and
LowerRight
positions. The show
method displays the current values of UpperLeft
and
LowerRight
positions.
calculatearea
The function calculatearea
takes an instance of
shapes.MyRectangle
as an argument and calculates the
area of the rectangle.
Mapping in C++
The C++ header file provides interfaces to the MATLAB
MyPosition
and MyRectangle
classes and the
MATLAB function calculatearea
. This allows for
interaction between C++ and MATLAB.
namespace shapes
The MATLAB
shapes
package is mapped to a C++ namespace of the same
name.
shapes::MyPosition
The C++ shapes::MyPosition
class represents the
MATLAB
MyPosition
class. It includes getter and setter methods
for the properties X
and Y
which
correspond to the properties in the MATLAB class. They are: getX
,
setX
, getY
,
setY
. The constructor creates an instance of the
MATLAB
MyPosition
class.
shapes::MyRectangle
The C++ shapes::MyRectangle
class represents the
MATLAB
MyRectangle
class. It includes getter and setter methods
for the properties UpperLeft
and
LowerRight
which correspond to the properties in the
MATLAB class. They are: getUpperLeft
,
setUpperLeft
, getLowerRight
,
setLowerRight
. The constructor creates an instance of
the MATLAB
MyRectangle
class.
The shapes::MyRectangle
class also includes methods for
show and enlarge which correspond to the methods in the MATLAB class. The methods make use of the
MATLABControllerType
instance to execute the
MATLAB functions using the feval
method.
calculatearea
The calculatearea
function corresponds to the
MATLAB
calculatearea
function. The function takes an instance of
shapes::MyRectangle
as an argument and calculates the
area of the rectangle. The calculation is performed by calling the
MATLAB
calculatearea
function using the feval
method of MATLABControllerType
.
See Also
arguments
| properties
| compiler.build.cppSharedLibrary