Main Content

正しくない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);

関連するトピック