Main Content

Use MATLAB Handle Objects in Python

This example shows how to create an object from a MATLAB® handle class and call its methods in Python®.

In your current folder, create a MATLAB handle class in a file named Triangle.m.

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

Start Python. Create a Triangle handle object and call its area method with the engine. Pass the handle object as the first positional argument.

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

Copy tr to the MATLAB workspace. You can use eval to access the properties of a handle object from the workspace.

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

Change the height with the setHeight method. If your MATLAB handle class defines get and set methods for properties, you can access properties without using the MATLAB workspace.

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

Note

Triangle class object tr, is a handle to the object, not a copy of the object. If you create tr in a function, it is only valid within the scope of the function.

See Also

|

Related Topics