2d数组:更改元素Perl
我有一个Perl中的2d数组。我将数组传递给一个子例程,希望修改2d数组的所有元素,然后返回它并打印数组。我已经在下面附上了我的代码。我遇到的问题实际上是更改每个单独的元素并将数组传递给子例程 原始矩阵+代码2d数组:更改元素Perl,perl,multidimensional-array,Perl,Multidimensional Array,我有一个Perl中的2d数组。我将数组传递给一个子例程,希望修改2d数组的所有元素,然后返回它并打印数组。我已经在下面附上了我的代码。我遇到的问题实际上是更改每个单独的元素并将数组传递给子例程 原始矩阵+代码 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 translateMat
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);
xyz
CG-3.74900-4.89100-3.45400
OD1-6.45900-6.29100-6.08000
OD2-1.31600-1.83300-0.17600
子平移三叉运算
{
my(@translatematrix,$x,$y,$z)=@;
打印“先打印\n”;
my$arrsize=scalar@translatematrix;
对于(我的$i=0;$i
没有意义,因为@translatematrix
从@
中提取所有元素,应该是:
my ($translatematrix, $x, $y, $z) = @_;
其中,$translatematrix
是数组引用
$_ = $_ - $x;
应该更像
$translatematrix->[$i][$j] -= $x;
此外,还应采用与$y
和$z
类似的逻辑。关于样式,对于(我的$i=0;你考虑使用的$$?应该使矩阵运算很容易。这个技术起作用,但是它阻止我使用当前的计算长度的方法。我如何计算数组的长度?@ USER 2657 817,你可以改变参数顺序IE.<代码>我的($x,$y,$z,@ TrimeMatrix)=@,;/COD> >所以数组是最后一个数组。
$translatematrix->[$i][$j] -= $x;