У меня есть 2d массив в Perl. Я передал массив подпрограмме, и я хочу изменить все элементы массива 2d, а затем вернуть его и распечатать массив. Я добавил код ниже. Проблема, с которой я столкнулась, фактически изменяет каждый отдельный элемент и передает массив подпрограмме.2d Массив: меняющиеся элементы Perl
Оригинальная матрица + код
x y z
CG -3.74900 -4.89100 -3.45400
OD1 -6.45900 -6.29100 -6.08000
OD2 -1.31600 -1.83300 -0.17600
sub translateMatrixOperation
{
my (@translatematrix, $x, $y, $z) = @_;
print "PRINTING FIRST\n";
my $arrsize = scalar @translatematrix;
for(my $i = 0; $i <= $arrsize; $i++)
{
for(my $j = 0; $j <= $arrsize; $j++)
{
if ($j == 0)
{
print "[$i][$j]:$translatematrix[$i][$j]\n";
$_ = $_ - $x;
}
elsif ($j == 1)
{
print "[$i][$j]:$translatematrix[$i][$j]\n";
$_ = $_ - $y;
}
elsif ($j == 2)
{
print "[$i][$j]:$translatematrix[$i][$j]\n";
$_ = $_ - $z;
}
}
}
print "PRINTING\n";
for(my $i = 0; $i <= $arrsize; $i++)
{
for(my $j = 0; $j <= $arrsize; $j++)
{
print "$translatematrix[$i][$j] ";
}
print "\n";
}
# return (\@translatematrix);
} Я хочу изменить весь массив путем добавления постоянного значения к значениям х, постоянное значение для значений у, а постоянная в г. Где я неправ?
относительно стиля, 'for (my $ i = 0; $ i <= $ arrsize; $ i ++)' обычно записывается как 'для my $ i (0 .. $ # arr)' для '@ arr' array –
Считаете ли вы использование [PDL] (http://pdl.perl.org/)? Должно делать операции с матрицей очень легко. – memowe