2011/07/28

MATLABの演算子 .* って?

MATLABの演算子の前に . がついていることがある。

以下のように計算結果が異なる。
>> A=[1 2; 3 4]
>> B=[5 6; 7 8]
>> A*B
ans =
19 22
43 50
>> A.*B
ans =
5 12
21 32


A*B は通常の行列演算のため
A=[a b ; c d]
B=[p q ; r s]
の場合
A*B=[a*p+b*r a*q+b*s ; c*p+d*r c*q+d*s]
の計算が行われる。
上記の例では、
A*B=[1*5+2*7 1*6+2*8; 3*5+4*7 3*6+4*8]
A*B=[19 22 ; 43 50 ]

A.*B は行列の要素どうしの演算
A=[a b ; c d]
B=[p q ; r s]
の場合
A.*B=[a*p b*q ; c*p d*s]
のため上記例では、
A.*B=[1*5 2*6 ; 3*7 4*8]
A.*B=[5 12 ; 21 32]
となる。