ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

正しくない Java データ型

Java 文字列から MATLAB 文字ベクトルへ

文字ベクトルの構造体

一部の MATLAB® 構造体は、名前と値のペアの struct を入力引数として受け入れます。Java® 用の MATLAB エンジン API は com.mathworks.matlab.engine.Struct クラスを提供してこのデータ構造体を Java で作成し、MATLAB に渡します。構造体はそこで MATLAB struct に変換されます。

struct 入力を受け入れる一部の MATLAB 関数では、フィールドの値が MATLAB string (string) ではなく MATLAB 文字ベクトル (char) であることが要求されます。値の型が正しい Java Struct を作成するには、変数を MATLAB に渡す前に Stringchar 配列に変換します。

変換には 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);

String 引数から文字ベクトルへ

MATLAB 関数で char 入力が必要な場合は、MATLAB に渡される関数呼び出しで Java String を変換できます。たとえば、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 に渡す際に、Java char 配列として渡します。

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 整数から MATLAB double へ

sqrt など一部の MATLAB 関数では、入力が double (倍精度) または single (単精度) の値に限定されています。MATLAB エンジンは Java 整数を MATLAB int32 値に変換します。整数値を受け入れない MATLAB 関数については、適切な数値を必ず渡すようにしてください。

double result = engine.feval("sqrt", 4);
Undefined function 'sqrt' for input arguments of type 'int32'.

double を渡すと正常に機能します。

double result = engine.feval("sqrt", 4.0);

関連するトピック