Java 配列の要素へのアクセス
MATLAB 配列インデックス付け
Java® オブジェクト配列の要素にアクセスするには、MATLAB® 配列インデックス付け構文 A(row,column)
を使用します。Java プログラムでは、構文は A[row-1][column-1]
です。
単独の添字インデックス
単独の添字のある MATLAB 行列の要素を参照する際、MATLAB は行列の単一要素を返します。一方、Java の多次元配列への単独の添字 (線形) インデックスはサブ配列を返します。
たとえば、MATLAB 配列を作成します。
for m = 1:4 for n = 1:5 matlabArr(m,n) = (m*10)+n; end end matlabArr
matlabArr = 11 12 13 14 15 21 22 23 24 25 31 32 33 34 35 41 42 43 44 45
内容を Java 配列にコピーします。
javaArr = javaArray('java.lang.Integer',4,5); for m = 1:4 for n = 1:5 javaArr(m,n) = java.lang.Integer(matlabArr(m,n)); end end javaArr
javaArr = java.lang.Integer[][]: [11] [12] [13] [14] [15] [21] [22] [23] [24] [25] [31] [32] [33] [34] [35] [41] [42] [43] [44] [45]
インデックス値 3 で MATLAB 配列の単一要素が返されます。
matlabArr(3)
ans = 31
インデックス値 3 で Java 配列の 3 行目全体が返されます。
javaArr(3)
ans = java.lang.Integer[]: [31] [32] [33] [34] [35]
Java 配列への線形インデックス付けにより、大きい配列構造から配列全体を指定することができます。その後、それをオブジェクトとして操作できます。
コロン演算子のインデックス
配列の要素の範囲を指定するには、colon
演算子 (:
) を使用します。たとえば、4 行 5 列の Java 配列を作成します。
dblArray = javaArray('java.lang.Double',4,5); for m = 1:4 for n = 1:5 dblArray(m,n) = java.lang.Double((m*10)+n); end end 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]
列 2 から 4 の要素からサブ配列 row2Array
を作成します。
row2Array = dblArray(2,2:4)
row2Array = java.lang.Double[]: [22] [23] [24]
コロンを線形インデックス付けと一緒に使用して行列全体のすべての要素を参照することもできます。ただし、Java 配列と MATLAB 配列はメモリでの格納方法が異なるため、線形配列の要素の順序が異なります。Java 配列要素は「行 x 列」の形式、つまり行列の行と一致する順序で格納されます。MATLAB 配列要素は列方向、つまり列と一致する順序で格納されます。たとえば、4 行 5 列の配列 dblArray
を 20 行 1 列の線形配列に変換します。
linearArray = dblArray(:)
linearArray = java.lang.Double[]: [11] [12] [13] [14] [15] [21] [22] [23] [24] [25] [31] [32] [33] [34] [35] [41] [42] [43] [44] [45]
END の添字使用
複数レベルの Java 配列の最上位レベルの配列を参照するには、end
キーワードを最初の添字として使用します。たとえば、Java 配列 dblArray
の 3 行目から最後の行までのデータを表示します。
last2rows = dblArray(3:end,:)
last2rows = java.lang.Double[][]: [31] [32] [33] [34] [35] [41] [42] [43] [44] [45]
下位レベルの配列で end
を使用しないでください。配列に潜在的に不調和な性質があるため、MATLAB では最後の値を判別できません。詳細については、Java 配列の形状を参照してください。
オブジェクトの配列要素の MATLAB 型への変換
java.lang.Object
配列の要素にアクセスする場合、MATLAB は、java.lang.Object 型の戻り値の表に基づいて、要素を MATLAB の型に変換します。その他の型の Java 配列の要素は、MATLAB によって変換されません。
たとえば、java.lang.Object
配列に java.lang.Double
要素が含まれる場合、MATLAB はその要素を MATLAB double
に変換します。しかし、MATLAB は java.lang.Double
配列の java.lang.Double
要素を変換しないため、MATLAB では java.lang.Double
として返されます。