Generate Code for MATLAB Value Classes
This example shows how to generate code for a MATLAB® value class and then view the generated code in the code generation report.
In a writable folder, create a MATLAB value class,
Shape. Save the code asShape.m.classdef Shape % SHAPE Create a shape at coordinates % centerX and centerY properties centerX; centerY; end properties (Dependent = true) area; end methods function out = get.area(obj) out = obj.getarea(); end function obj = Shape(centerX,centerY) obj.centerX = centerX; obj.centerY = centerY; end end methods(Abstract = true) getarea(obj); end methods(Static) function d = distanceBetweenShapes(shape1,shape2) xDist = abs(shape1.centerX - shape2.centerX); yDist = abs(shape1.centerY - shape2.centerY); d = sqrt(xDist^2 + yDist^2); end end end
In the same folder, create a class,
Square, that is a subclass ofShape. Save the code asSquare.m.classdef Square < Shape % Create a Square at coordinates center X and center Y % with sides of length of side properties side; end methods function obj = Square(side,centerX,centerY) obj@Shape(centerX,centerY); obj.side = side; end function Area = getarea(obj) Area = obj.side^2; end end end
In the same folder, create a class,
Rhombus, that is a subclass ofShape. Save the code asRhombus.m.classdef Rhombus < Shape properties diag1; diag2; end methods function obj = Rhombus(diag1,diag2,centerX,centerY) obj@Shape(centerX,centerY); obj.diag1 = diag1; obj.diag2 = diag2; end function Area = getarea(obj) Area = 0.5*obj.diag1*obj.diag2; end end end
Write a function that uses this class.
function [TotalArea, Distance] = use_shape %#codegen s = Square(2,1,2); r = Rhombus(3,4,7,10); TotalArea = s.area + r.area; Distance = Shape.distanceBetweenShapes(s,r);
Generate a static library for
use_shapeand generate a code generation report.codegen -config:lib -report use_shape
codegengenerates a C static library with the default name,use_shape, and supporting files in the default folder,codegen/lib/use_shape.Click the View report link.
To see the
Rhombusclass definition, on the MATLAB Source pane, underRhombus.m, clickRhombus. TheRhombusclass constructor is highlighted.Click the Variables tab. You see that the variable
objis an object of theRhombusclass. To see its properties, expandobj.
In the MATLAB Source pane, click Call Tree.
The Call Tree view shows that
use_shapecalls theRhombusconstructor and that theRhombusconstructor calls theShapeconstructor.
In the code pane, in the
Rhombusclass constructor, move your pointer to this line:Theobj@Shape(centerX,centerY)Rhombusclass constructor calls theShapemethod of the baseShapeclass. To view theShapeclass definition, inobj@Shape, double-clickShape.