Main Content

Python에서 MATLAB 핸들 객체 사용하기

이 예제에서는 MATLAB® 핸들 클래스에서 객체를 생성한 후 Python®에서 그 메서드를 호출하는 방법을 보여줍니다.

현재 폴더에서 Triangle.m이라는 이름의 파일에 MATLAB 핸들 클래스를 생성합니다.

classdef Triangle < handle
    properties (SetAccess = private)
        Base = 0;
        Height = 0;
    end
    
    methods
        function TR = Triangle(b,h)
            TR.Base = b;
            TR.Height = h;
        end
        
        function a = area(TR)
            a = 0.5 .* TR.Base .* TR.Height;
        end
        
        function setBase(TR,b)
            TR.Base = b;
        end
        
        function setHeight(TR,h)
            TR.Height = h;
        end
    end
end

Python을 시작합니다. Triangle 핸들 객체를 생성하고 그 area 메서드를 엔진에서 호출합니다. 핸들 객체를 첫 번째 위치 인수로 전달합니다.

import matlab.engine
eng = matlab.engine.start_matlab()
tr = eng.Triangle(5.0,3.0)
a = eng.area(tr)
print(a)
7.5

tr을 MATLAB 작업 공간으로 복사합니다. eval을 사용하여 작업 공간에서 핸들 객체의 속성에 액세스할 수 있습니다.

eng.workspace["wtr"] = tr
b = eng.eval("wtr.Base")
print(b)
5.0

setHeight 메서드를 사용하여 높이를 변경합니다. MATLAB 핸들 클래스가 속성에 대한 get 메서드와 set 메서드를 정의한 경우, MATLAB 작업 공간을 사용하지 않고도 속성에 액세스할 수 있습니다.

eng.setHeight(tr,8.0,nargout=0)
a = eng.area(tr)
print(a)
20.0

참고

Triangle 클래스 객체 tr은 객체의 복사본이 아니라 객체에 대한 핸들입니다. 함수에서 tr을 생성한 경우 이는 해당 함수 범위 내에서만 유효합니다.

참고 항목

|

관련 항목