В этом примере показано, как сгенерировать код для класса значения MATLAB® и затем просмотреть сгенерированный код в отчете генерации кода.
В перезаписываемой папке создайте класс значения MATLAB, Shape
. Сохраните код как Shape.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
В той же папке создайте класс, Square
, это - подкласс Shape
. Сохраните код как Square.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
В той же папке создайте класс, Rhombus
, это - подкласс Shape
. Сохраните код как Rhombus.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
Запишите функцию, которая использует этот класс.
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);
Сгенерируйте статическую библиотеку для use_shape
и сгенерируйте отчет генерации кода.
codegen -config:lib -report use_shape
codegen
генерирует статическую библиотеку C с именем по умолчанию, use_shape
, и вспомогательные файлы в папке по умолчанию, codegen/lib/use_shape
.
Щелкните по ссылке View report.
Видеть Rhombus
определение класса, на панели MATLAB Source, под Rhombus.m
, нажмите Rhombus
. Rhombus
конструктор класса подсвечен.
Кликните по вкладке Variables. Вы видите что переменная obj
объект Rhombus
класс. Чтобы видеть его свойства, расширьте obj
.
В панели MATLAB Source нажмите Call Tree.
Представление Call Tree показывает тот use_shape
вызывает Rhombus
конструктор и что Rhombus
конструктор вызывает Shape
конструктор.
В панели кода, в Rhombus
конструктор класса, указатель перемещения к этой линии:
obj@Shape(centerX,centerY)
Rhombus
конструктор класса вызывает Shape
метод основного Shape
класс. Просмотреть Shape
определение класса, в obj@Shape
, дважды кликните Shape
.