Use MATLAB Handle Objects in Python - MATLAB & Simulink (original) (raw)
Main Content
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 itsarea
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)
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)
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)
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
matlab.engine.MatlabEngine | matlab.engine.FutureResult