| 外部インタフェース/API | ![]() |
Java配列の要素へのアクセス
MATLABの配列のインデックス付けシンタックスA(row,col)を使って、Javaオブジェクト配列の要素にアクセスできます。たとえば、行3、列4の配列dblArrayの要素にアクセスするには、以下を使います。
row3_col4 = dblArray(3,4) row3_col4 = 34.0
MATLABの配列のインデックス付けのシンタックスを使って、オブジェクトのデータフィールドの要素にアクセスすることも可能です。myMenuObjがwindow menuクラスのインスタンスであるとします。このユーザ定義クラスは、java.awt.menuItemのJava配列であるデータフィールドmenuItemArrayをもちます。この配列の要素3を取得するには、つぎのコマンドを使います。
currentItem = myMenuObj.menuItemArray(3)
単一のサブスクリプトのインデックスを使った配列のアクセス
MATLAB行列の要素は、行と列のサブスクリプトを使って最も一般的に参照されます。たとえば、行3、列4の交点にある配列要素を参照するには、x(3,4) を使います。単一のサブスクリプトを使うとより有利である場合があります。MATLABは、この機能を提供しています(「アドバンスドなインデックス」を参照)。
単一のサブスクリプトを使ったMATLAB行列のインデックス付けは、行列の1要素を参照します。下記のMATLAB行列を使って、matlabArray(3)は行列の1要素を出力します。
matlabArray = [11 12 13 14 15; 21 22 23 24 25; ...
31 32 33 34 35; 41 42 43 44 45]
matlabArray =
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
matlabArray(3)
ans =
31
この方法で配列のJava配列にインデックスを付けると、構造体全体のサブ配列を参照します。上記のmatlabArrayと同じように見えるdblArray Java配列を使うと、dblArray(3)は、3行目を構成する5行1列配列を出力します。
row3 = dblArray(3)
row3 =
java.lang.Double[]:
[31]
[32]
[33]
[34]
[35]
これは、大きい配列構造から配列全体を指定することができ、それをオブジェクトとして操作できるので、便利な機能です。
コロン演算子の使用法
MATLABのコロン演算子(:)の利用は、Java配列参照のサブスクリプトでサポートされています。この演算子は、MATLAB配列の内容を参照するときと同様に機能します。java.lang.DoubleオブジェクトのJava配列を使うと、ステートメントdblArray(2,2:4)は、低レベル配列dblArray(2)の一部分を参照します。新規配列row2Arrayは、列2から4の要素から作成されます。
dblArray
dblArray =
java.lang.Double[][]:
[11] [12] [13] [14] [15]
[21] [22] [23] [24] [25]
[31] [32] [33] [34] [35]
[41] [42] [43] [44] [45]
row2Array = dblArray(2,2:4)
row2Array =
java.lang.Double[]:
[22]
[23]
[24]
「単一のサブスクリプトインデックスを使った配列のアクセス」で説明したように単一のサブスクリプトインデックスにおいてコロン演算子を使うことも可能です。サブスクリプトを数値ではなくコロンとすることにより、配列の配列を1つの線形配列に変換できます。つぎの例は、4行5列の配列dblArrayを20行1列の線形配列に変換します。
linearArray = dblArray(:)
linearArray =
java.lang.Double[]:
[11]
[12]
[13]
[14]
[15]
[21]
[22]
.
.
.
これは、N次元のJava配列構造に対しても同様に機能します。コロン演算子を配列の単一のサブスクリプトインデックスとして使うと、オリジナルの配列のすべての要素で構成される線形配列を生成します。
注意
JavaおよびMATLAB配列は、メモリでは異なって格納されます。これは、線形配列内で与えられる順番に反映されます。Java配列要素は、行列の行上記の配列の(11, 12, 13, ...)に一致する順番で格納されます。MATLAB配列要素は、列, (11, 21, 31, ...)に一致する順番で格納されます。 |
サブスクリプトでのENDの利用
アクセスステートメントの最初のサブスクリプトでendキーワードを使うことができます。最初のサブスクリプトは、マルチレベルJava配列構造の最上位配列を参照します。
注意
低レベル配列でendを使うことは、これらの配列のでこぼこな性質のため、無効です(「Java配列の形状」)を参照してください)。この場合は、一致する終端の値は得られません。 |
つぎの例は、Java配列dblArrayの3行目から最後の行のデータを表示します。
last2rows = dblArray(3:end, :)
last2rows =
java.lang.Double[][]:
[31] [32] [33] [34] [35]
[41] [42] [43] [44] [45]
| MATLAB内でのオブジェクトの配列の作成 | Java配列の割り当て | ![]() |