Main Content

MATLAB 값 클래스에 대한 코드 생성하기

이 예제에서는 MATLAB® 값 클래스에 대한 코드를 생성한 다음 생성된 코드를 코드 생성 리포트에서 보는 방법을 보여줍니다.

  1. 쓰기 가능한 폴더에서 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  
  2. 동일한 폴더에서 Shape의 서브클래스인 Square 클래스를 생성합니다. 코드를 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
  3. 동일한 폴더에서 Shape의 서브클래스인 Rhombus 클래스를 생성합니다. 코드를 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
  4. 이 클래스를 사용하는 함수를 작성합니다.

    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);  
  5. use_shape에 대한 정적 라이브러리를 생성하고, 코드 생성 리포트를 생성합니다.

    codegen -config:lib -report use_shape

    codegen은 디폴트 폴더 codegen/lib/use_shapeuse_shape(디폴트 이름) C 정적 라이브러리와 지원 파일을 생성합니다.

  6. View report 링크를 클릭합니다.

  7. Rhombus 클래스 정의를 보려면 MATLAB Source 창의 Rhombus.m에서 Rhombus를 클릭합니다. Rhombus 클래스 생성자가 강조 표시됩니다.

  8. Variables 탭을 클릭합니다. 변수 objRhombus 클래스의 객체임을 알 수 있습니다. 해당 속성을 보려면 obj를 확장하십시오

    This image shows the code generation report viewer for the example discussed previously. It shows the code for the Rhombus class, and the properties for the class constructor.

  9. MATLAB Source 창에서 Call Tree를 클릭합니다.

    Call Tree 보기에서 use_shapeRhombus 생성자를 호출하고 Rhombus 생성자가 Shape 생성자를 호출함을 알 수 있습니다.

    This image shows the MATLAB Source pane after you click Call Tree.

  10. 코드 창의 Rhombus 클래스 생성자에서 포인터를 다음 라인으로 움직입니다.

    obj@Shape(centerX,centerY)
    Rhombus 클래스 생성자가 기본 Shape 클래스의 Shape 메서드를 호출합니다. Shape 클래스 정의를 보려면 obj@Shape에서 Shape를 더블 클릭합니다.

    This image shows the code for the Shape class definition in the report viewer. This view opens after you follow step 10. To view the Shape class definition, in obj@Shape, double-click Shape.