【Perl】 行列の計算 【PDL::Matrix】
Perlで行列の計算をする場合、
PDL::Matrixを使用すると簡単です。
使い方はサンプルコードさんとこにまとめられているので
そこを参考にしています。
まずは行列の作成。
簡単にできます。
次に計算をしてみます。
行列の足し算引き算は簡単にできます。
[
[a,b],
[c,d]
]
と
[
[e,f],
[g,h]
]
足したり引いたりする場合
[
[a±e,b±f],
[c±g,d±h]
]
となります。
というわけでこんな感じ。
行列の掛け算は少し面どくさいです。
[
[a,b]
]
と
[
[c]
[d]
]
を掛けると
[
[a * c + b * d]
]
[a,b],
[c,d]
]
と
[
[e],
[f]
]
を掛けると
[
[a * e + b * f],
[c * e + d * f]
]
[a,b],
[c,d]
]
と
[
[e,f],
[g,h]
]
を掛けると
[
[a * e + b * g],[a * f + b * h],
[c * e + d * g],[c * f + d * h]
]
になる。
ここまでくると慣れの問題なんだろうなぁ。
とりあえず理解よりも暗記。
PDL::Matrixを使用すると簡単です。
使い方はサンプルコードさんとこにまとめられているので
そこを参考にしています。
まずは行列の作成。
use PDL;
use PDL::Matrix;
my $mat1 = mpdl [1, 2],[3,4];
print $mat1;
簡単にできます。
次に計算をしてみます。
行列の足し算引き算は簡単にできます。
[
[a,b],
[c,d]
]
と
[
[e,f],
[g,h]
]
足したり引いたりする場合
[
[a±e,b±f],
[c±g,d±h]
]
となります。
というわけでこんな感じ。
use PDL;
use PDL::Matrix;
my $mat1 = mpdl [1, 2],[3,4];
my $mat2 = mpdl [2, 3],[4,5];
my $add = $mat1 + $mat2;
print $add;
行列の掛け算は少し面どくさいです。
[
[a,b]
]
と
[
[c]
[d]
]
を掛けると
[
[a * c + b * d]
]
use PDL;[
use PDL::Matrix;
my $mat1 = mpdl [3,4];
my $vec1 = vpdl [4,5];
my $multiply = $mat1 x $vec1;
print $multiply;
[a,b],
[c,d]
]
と
[
[e],
[f]
]
を掛けると
[
[a * e + b * f],
[c * e + d * f]
]
use PDL;[
use PDL::Matrix;
my $mat1 = mpdl [1,2],[3,4];
my $vec1 = vpdl [2,3];
my $multiply = $mat1 x $vec1;
print $multiply;
[a,b],
[c,d]
]
と
[
[e,f],
[g,h]
]
を掛けると
[
[a * e + b * g],[a * f + b * h],
[c * e + d * g],[c * f + d * h]
]
になる。
use PDL;
use PDL::Matrix;
my $mat1 = mpdl [1,2],[3,4];
my $mat2 = mpdl [2,3],[4,5];
my $multiply = $mat1 x $mat2;
print $multiply;
ここまでくると慣れの問題なんだろうなぁ。
とりあえず理解よりも暗記。