MATLAB への Java CellStr の引き渡し
MATLAB cell 配列
MATLAB® cell 配列では、各セルに可変長文字ベクトルを格納できます。一部の MATLAB 関数では、入力引数として文字ベクトルの cell 配列が要求されます。com.mathworks.matlab.types.CellStr
クラスを使用して、Java® で文字ベクトルの cell 配列を定義します。
MATLAB エンジンは、文字ベクトルの MATLAB cell 配列を MATLAB から Java に渡す際に Java String
配列に変換します。
CellStr の作成
このコード例では、CellStr
オブジェクトと double 配列を引数として MATLAB の containers.Map
コンストラクターに渡すことで、MATLAB の containers.Map
のインスタンスを作成します。
containers.Map
は MATLAB の handle
クラスであるため、戻り値の型を com.mathworks.matlab.types.HandleObject
として定義します。
containers.Map
keys
メソッドは MATLAB cellstr
をキー名と共に返します。一方、MatlabEngine
の feval
メソッドは String
配列を Java に返します。
import com.mathworks.engine.*; import com.mathworks.matlab.types.*; public class CellArrays { public static void main(String[] args) throws Exception { MatlabEngine eng = MatlabEngine.startMatlab(); CellStr keyCellStr = new CellStr(new String[]{"One", "Two", "Three"}); double[] valueObject = {1.0, 2.0, 3.0}; HandleObject myMap = eng.feval("containers.Map", keyCellStr, valueObject); String[] keysArray = eng.feval("keys", myMap); for (String e: keysArray) { System.out.println(e); } eng.close(); } }