行列の要素へのアクセス

行列の要素を取り出したり、行列の情報を取得する方法について。

単一の要素を取り出す

要素の位置を指定
例:Aの(2,2)要素を取り出します。

A = [1 2 3; 4 5 6];
B = A(2, 2)

末尾の要素を指定
end を用いることで行または列の末端の要素を選択できます。
行列の要素数が既知でない場合など、末尾の要素番号がわからない場合などに便利です。

A = [1 2 3; 4 5 6];
B = A(2, end) % Aの2行目、最終列の要素を選択

最大要素
max() を用いることで行列の最大要素を選択できます。
Aがベクトルの場合はmax(A)でAの要素のうち最大の要素が得られます。
Aが行列の場合、max(A) はAの列をベクトルとして取り扱い、各列の最大要素を含む行ベクトルを返します。

A1 = [1 3 7];
A2 = max(A1) % A2 = 7

B1 = [1 8 3; 4 5 2];
B2 = max(B1) % B2 = [4 8 3] 各列の中で最大の値が返される
B3 = max( max(B1) ) % B3 = 8

最小要素
min() を用いることで行列の最小要素を選択できます。
Aがベクトルの場合はmax(A)でAの要素のうち最小の要素が得られます。
Aが行列の場合、max(A) はAの列をベクトルとして取り扱い、各列の最小要素を含む行ベクトルを返します。

A1 = [1 3 7];
A2 = min(A1) % A2 = 1

B1 = [1 8 3; 4 5 2];
B2 = min(B1) % B2 = [1 4 2] 各列の中で最小の値が返される
B3 = min( min(B1) ) % B3 = 1

複数の要素を取り出す

特定の行または列を全て取り出す
コロン(全称記号)用いることで特定の行または列を全て取り出すことが出来ます。

A = [1 2 3; 4 5 6; 7 8 9];
B1 = A(:, 2) % 2列目の全ての要素
B2 = A(3, :) % 3行目の全ての要素
B3 = A([1 3], :) % 1行目および3行目の全ての要素

特定の範囲の要素を取り出す
コロン(全称記号)用いることで特定の範囲の要素を取り出すことが出来ます。

A = [1 2 3; 4 5 6; 7 8 9];
B1 = A(1:2, 2) % 2列目の、1行目から2列目の要素
B2 = A(2:3, 1:2) % 2から3行目の、1から2列目の要素
B3 = A([1 3], 2:3) % 1行目および3行目の、2から3列目の要素
C = diag(A) % 

行列の情報を得る

size()
行列の各次元のサイズを取得できます。

A = [1 2 3; 4 5 6];
D = size(A)
R = size(A, 1)
C = size(A, 2)
[m n] = size(A)

length()
行列の最大次元の要素数を得られます。

A = 3:6;
L = length(A)
B = [1 2 3 4; 5 6 7 8];
L = length(B)

any()
配列中に非ゼロの要素が1つでもあれば1を、そうでなければ0を返します。

A = [0 3 2];
B = [0 0 1; 2 0 0];
any(A) % 配列がベクトルの場合、ベクトル中に非ゼロの要素が存在すれば1、そうでなければ0
any(B) % 配列が行列の場合、各列ベクトルについて値を返す

all()
全ての要素が非ゼロなら1を、そうでなければ0を返します。

A = [0 1 2];
B = [1 2 1];
all(A)
all(B)

find()
非ゼロ要素のインデックスを返します。

A = [1 0 2 3 0];
find(A)

B = [1 0 1; 0 0 2];
[x, y] = find(B)

numel()
配列に含まれる要素の数を返します。

A = [1 2 3 4; 5 6 7 8];
mean = sum( A(:) ) / numel(A) % Aの全要素の平均を計算

isempty()
配列が空の配列の場合は1を、そうでなければ0を返します。

A = 1;
B = [0 0];
C = [];
[isempty(A) isempty(B) isempty(C)]

A = [0 0 0];
F = find(A);
[isempty(A) isempty(F)]

isvector()
配列がベクトルなら1を、そうでなければ0を返します。

A = 1;
B =[1 0];
C = zeros(2);
[isvector(A) isvector(B) isvector(C)]

コメント