2011/05/18

配列の要素どうしの積を求める方法

配列の要素どうしの積を求める方法

配列A、Bが以下の場合。

>> A
A =
1
2
3
4
5

>> B
B =
1 2 3 4 5


まずはrepmatで配列をそろえる

>> A2=repmat(A,1,5)
A2 =
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5

>> B2=repmat(B,5,1)
B2 =
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5


この状態で積を求めてみる。

>> A2.*B2
ans =
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25


欲しいのはこの対角線上の値。
そこで対角要素だけを抽出する。

>> diag(A2.*B2)
ans =
1
4
9
16
25


※以下、おまけ
単位行列を用意する。

>> eye(5)
ans =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1


単位行列を掛ける。

>> eye(5).*(A2.*B2)
ans =
1 0 0 0 0
0 4 0 0 0
0 0 9 0 0
0 0 0 16 0
0 0 0 0 25

2011/05/06

MATLAB:行列から指定した行,列の取出し方

■行の取出し
A(i,:) … m×nの行列A(2次元配列A)のi行目が取り出せる.
A(i:j,:) … m×nの行列A(2次元配列A)のi行目からj行目までが取り出せる.
A(i:k:j,:) … m×nの行列A(2次元配列A)のi行目からk行おきにj行目までが取り出せる.

■列の取出し
A(:,i) … m×nの行列A(2次元配列A)のi列目が取り出せる.
A(:,i:j) … m×nの行列A(2次元配列A)のi列目からj列目までが取り出せる.
A(:,i:k:j) … m×nの行列A(2次元配列A)のi列目からk列おきにj列目までが取り出せる.