はじめに
※ MATLAB、Python、Scilab、Julia比較ページはこちら。
MATLABに於ける行列演算の備忘録。
元々、MATLABの得意ジャンルであるため、できないことは無いと思って良い。
逆にこれに慣れて、他言語に行くと行列に対する素の知識が欠落している事実に気づかされることも多々ある。
前提
\[A=
\begin{bmatrix}
1 & 2 \\
3 & 4
\end{bmatrix}
\]
\[B=
\begin{bmatrix}
5 & 6 \\
7 & 8
\end{bmatrix}
\]
>> A=[1 2;3 4]
A =
1 2
3 4
>> B=[5 6;7 8]
B =
5 6
7 8
足し算
>> A+B
ans =
6 8
10 12
引き算
>> A-B
ans =
-4 -4
-4 -4
掛け算(内積)
>> A*B
ans =
19 22
43 50
アダマール積
>> A.*B
ans =
5 12
21 32
左除算
‘¥’はバックスラッシュと同義
>> A\B
ans =
-3 -4
4 5
>> inv(A)*B
ans =
-3.0000 -4.0000
4.0000 5.0000
右除算
>> A/B
ans =
3.0000 -2.0000
2.0000 -1.0000
>> A*inv(B)
ans =
3.0000 -2.0000
2.0000 -1.0000
べき乗
内積ベースとアダマール積ベースがある。
内積ベースのべき乗
>> A^2
ans =
7 10
15 22
アダマール積ベースのべき乗
>> A.^2
ans =
1 4
9 16
>> power(A,2)
ans =
1 4
9 16
転置
>> A'
ans =
1 3
2 4
>> transpose(A)
ans =
1 3
2 4
一次元目(縦方向)に対して反転
>> flipdim(A,1)
ans =
3 4
1 2
>> A(end:-1:1,:)
ans =
3 4
1 2
ニ次元目(横方向)に対して反転
>> flipdim(A,2)
ans =
2 1
4 3
>> A(:,end:-1:1)
ans =
2 1
4 3
まとめ
行列演算は通常の四則演算と異なる。
が、そこはMATLABがうまくやってくれるので、使い方だけ覚えておけばOK。
とはいえ、2×2、3×3の行列くらいは手計算で出来てる方が「理解して使ってる」ことになるので尚良い。
※ MATLAB、Python、Scilab、Julia比較ページはこちら。
コメント