行列の和を求める
行列の和をPerlで求めてみましょう。行列は列優先の行列だと考えてください。
# 数学の行列表現 # 3行2列の行列 # 1 4 # 2 5 # 3 6 # 列優先でのデータのもちかた my $mat = { values => [1, 2, 3, 4, 5, 6], rows_length => 3, columns_length => 2, };
行列の和を求める計算は、配列の行列の各要素の和を求める計算を行うだけです。
行列の和を求めるPerlプログラム
行列の和を求めるPerlプログラムです。
use strict; use warnings; # 行列の和 sub mat_add { my ($mat1, $mat2) = @_; my $mat_out = {}; $mat_out->{rows_length} = $mat1->{rows_length}; $mat_out->{columns_length} = $mat2->{columns_length}; for (my $i = 0; $i < @{$mat1->{values}}; $i++) { $mat_out->{values}->[$i] = $mat1->{values}->[$i] + $mat2->{values}->[$i]; } return $mat_out; } my $mat1 = { values => [1, 2, 3, 4, 5, 6], rows_length => 3, columns_length => 2, }; my $mat2 = { values => [7, 8, 9, 10, 11, 12], rows_length => 3, columns_length => 2, }; # 行列の和 my $mat_add = mat_add($mat1, $mat2); # [Matrix Add]Row:3, Column:2, Values:8 10 12 14 16 18 print "[Matrix Add]Row:$mat_add->{rows_length}, Column:$mat_add->{columns_length}, Values:@{$mat_add->{values}}\n";