Main Content

MATLAB ハンドル オブジェクトの Python での使用

この例では、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 を作成すると、それは関数のスコープ内でのみ有効となります。

参考

|

関連するトピック