MATLABで二つの行列に対して要素ごとの演算を行う方法
掛け算
times()
,.*
: 二つの行列の各成分を掛け合わせ、その結果を返します。
二つの行列の大きさが完全に同じ、または一方がスカラー、もしくは行の大きさが同じ行ベクトル、列の大きさが同じ列ベクトルである場合のみ、演算が可能です。大きさが異なる場合、小さい行列が大きい行列と同じ大きさの行列であるかのように計算され、空いている場所は同じ値で埋められます。例えば、スカラーは全ての成分が同じ値を持つようになり、行ベクトルの場合、全ての行が同じ行列になります。よくわからない場合は、下の式を参照してください。.*
は点と掛け算記号が合わさっているので、要素ごとの掛け算と理解すれば良いです。他の成分ごとの演算の記号もこのように作られています。
$$ A = \begin{pmatrix} a_{1} & a_2 & a_{3} \end{pmatrix}, \quad B = \begin{pmatrix} b_{1} \\ b_{2} \\ b_{3} \\ b_{4} \end{pmatrix} $$
$$ \implies \begin{align*} A .* B &=\begin{pmatrix} a_{1} & a_2 & a_{3} \\ a_{1} & a_2 & a_{3} \\ a_{1} & a_2 & a_{3} \\ a_{1} & a_2 & a_{3} \end{pmatrix} \begin{pmatrix} b_{1} & b_{1} & b_{1} \\ b_2 & b_2 & b_2 \\ b_{3} & b_{3} & b_{3} \\ b_{4} & b_{4} & b_{4} \end{pmatrix} \\ &= \begin{pmatrix} a_{1}b_{1} & a_2b_{1} & a_{3}b_{1} \\ a_{1}b_2 & a_2b_2 & a_{3} b_2 \\ a_{1}b_{3} & a_2 b_{3} & a_{3} b_{3} \\ a_{1}b_{4} & a_2 b_{4} & a_{3} b_{4} \end{pmatrix} \end{align*} $$
例のコードと出力結果は以下の通りです。
A=[2 1 -3; 4 0 3]
B=[1 2 3]
C=[3; 1]
a=A.*B
b=A.*C
c=B.*C
d=3.*A
割り算
rdivide()
,./
: 二つの行列の各成分を割り、その結果を返します。
行列の大きさについての注意事項は.*
と同じです。これを使うと、行列Aの各成分の逆数を成分とする行列を簡単に計算できます。1./A
で求めることができます。
例のコードと出力結果は以下の通りです。
A=[2 1 -3; 4 0 3]
B=[1 2 3]
C=[3; 1]
a=rdivide(A,B)
b=A./C
c=B./C
d=1./A
累乗
power()
,.^
:A.^B
の場合、Aの各成分を底とし、Bの各成分を指数として計算した結果を返します。
例のコードと出力結果は以下の通りです。
A=[2 1 -3; 4 0 3]
B=[1 2 3]
C=[3; 1]
a=power(A,B)
b=A.^C
c=B.^C
d=3.^A