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
を作成すると、それは関数のスコープ内でのみ有効となります。
参考
matlab.engine.MatlabEngine
| matlab.engine.FutureResult