Main Content

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 をキー名と共に返します。一方、MatlabEnginefeval メソッドは 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();
    }
}

関連するトピック