正しくないJavaデータ型
Java文字列からMATLAB文字ベクトルへ
文字ベクトルの構造体
一部の MATLAB®構造体は、名前と値のペアのstruct
を入力引数として受け入れます。Java®用の MATLAB エンジン API はcom.mathworks.matlab.engine.Struct
クラスを提供してこのデータ構造体を Java で作成し、MATLAB に渡します。構造体はそこで MATLAB のstruct
に変換されます。
struct
入力を受け入れる一部の MATLAB 関数では、フィールドの値が MATLAB string (string
) ではなく MATLAB 文字ベクトル (char
) であることが要求されます。値の型が正しい JavaStruct
を作成するには、変数を MATLAB に渡す前に字符串
をchar
配列に変換します。
変換にはtoCharArray
メソッドを使用できます。
char[] on = "on".toCharArray(); char[] yOut = "yOut".toCharArray(); char[] tOut = "tOut".toCharArray(); Struct simParam = new Struct("SaveOutput", on, "OutputSaveName", yOut,"SaveTime", on, "TimeSaveName", tOut);
字符串引数から文字ベクトルへ
MATLAB 関数でchar
入力が必要な場合は、MATLAB に渡される関数呼び出しで Java字符串
を変換できます。たとえば、MATLAB 関数eval
ではchar
入力が要求されます。
double result = engine.feval("eval", "3+5");Undefined function 'eval' for input arguments of type 'string'..
char
配列を渡すと正常に機能します。
double result = engine.feval("eval", "3+5".toCharArray());
Javaからのグラフィックス オブジェクトのプロパティの設定
オブジェクトのハンドルを使用して、MATLAB グラフィックス オブジェクトのプロパティの値を設定することができます。プロパティの名前とプロパティの値を MATLAB に渡す際に、Javachar
配列として渡します。
double[][] data = {{1.0, 2.0, 3.0}, {-1.0, -2.0, -3.0}}; HandleObject[] h = eng.feval("plot", (Object)data); String property = ("HitTest"); String value = ("off"); eng.feval(0,"set", h, property.toCharArray(), value.toCharArray());
Java整数からMATLABdouble へ
sqrt
など一部の MATLAB 関数では、入力がdouble
(倍精度) またはsingle
(単精度) の値に限定されています。MATLAB エンジンは Java 整数を MATLABint32
値に変換します。整数値を受け入れない MATLAB 関数については、適切な数値を必ず渡すようにしてください。
double result = engine.feval("sqrt", 4);Undefined function 'sqrt' for input arguments of type 'int32'.
double を渡すと正常に機能します。
double result = engine.feval("sqrt", 4.0);