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,则它仅在该函数的作用域内有效。

另请参阅

|

相关主题