外部インタフェース/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配列の割り当て | ![]() |