MATLAB による Java 配列の表現方法
"Java® 配列" とは、固定数の single 型の値をもつコンテナー オブジェクトを表します。配列の型は
のように記述されます。多次元配列としても呼ばれる、複数の配列からなる配列は、type
[]String[][]
のように 2 つ以上の大かっこのセットを使用します。
"次元" とは、配列の要素をアドレス指定するために必要な添字の数を示します。次元 (dimension) は、長さ、幅、高さなどの寸法ではありません。たとえば、5 行 1 列の配列は 1 次元です。これは、個々の要素にアクセスするために使用する添字が 1 つであるためです。2 次元配列を操作するには、複数の配列からなる配列を作成します。さらに次元を追加する場合は、配列にさらにレベルを追加して、複数の配列からなる配列複数個による配列 (配列の配列の配列) のようにしていきます。
MATLAB® は複数レベルの Java 配列を、行列や多次元配列のように扱います。Java 配列の要素にアクセスするには、同じ MATLAB 構文を使用します。
配列インデックス付け
Java 配列インデックスは 0 ベースですが、MATLAB 配列インデックスは 1 ベースです。Java プログラミングでは、長さ N
の配列 y
の要素には y[0]
から y[N-1]
までを使用してアクセスします。MATLAB でこの配列を操作するとき、y(1)
から y(N)
までを使用してこれらの要素にアクセスします。
例については、Java 配列の要素へのアクセスを参照してください。
Java 配列の形状
2 次元の MATLAB 配列は、各行の長さと各列の高さが等しい矩形です。Java 配列は複数の配列からなる配列であり、必ずしもこの矩形の形式になるとは限りません。下位レベルのそれぞれの配列の長さは異なる場合があります。
次の図は、長さが異なる 3 つの基本的な配列の配列を示します。"ジャグ" (または "不調和") という表現は通常、配列の終わりが均一に一致しないような、このような配列要素の配置に使用されます。Java メソッドが Java プリミティブ型のジャグ配列を返すと、MATLAB はそれを cell 配列に格納します。
MATLAB 関数 string
はジャグの Java string 配列をパディングして MATLAB 方形配列にします。
Java 配列のサイズの解釈
MATLAB 関数 size
は、Java 配列の長さを返します。列数は常に 1 です。
Java 配列の形状は不調和になる可能性があるため、MATLAB 配列の場合と同じ方法で配列のサイズを指定することはできません。Java 配列では、下位レベルの配列のサイズを表す単一値はありません。
たとえば、次の Java 配列について考えてみます。
size(A)
は A の最高位の配列レベルの次元を返します。この配列の最高位のレベルのサイズは、3 行 1 列です。
size(A)
ans = 3 1
下位レベルの配列のサイズを確認する場合、たとえば行 3 に 5 要素ある配列だとすると、その行を明示的に指し示します。
size(A(3))
ans = 5 1
以下の構文を使用して size
コマンドで次元を指定できます。ただし、このコマンドは唯一の非単項の次元である最初の次元 dim=1
のみをサイズ指定します。
m = size(X,dim) size(A,1)
ans = 3
Java 配列の次元数の解釈
MATLAB 関数 ndims
は、Java 配列の次元数に必ず 2 を返します。この値は最上位レベルの配列の次元数です。
Java ベクトルの表示
MATLAB は Java ベクトルを列として表示しますが、行ベクトルのように処理します。例については、Java 配列の連結を参照してください。