Perl PDL:点坐标和矩阵构造

时间:2019-02-19 17:26:45

标签: perl matrix pdl

我有一个带有点坐标的文本文件。

X1 Y1
X2 Y2
X3 Y3
...
Xn Yn

想法是建立此坐标的矩阵。

我编写了第一个版本,该版本读取X和Y值,将它们分别推入@Xs和@Yx数组,然后使用

创建矩阵
$Points = PDL::Matrix->pdl([\@Xs, \@Ys]);

然后我得到一个2 x n矩阵:

[
 [X1, X2, X3, .., Xn]
 [Y1, Y2, Y3, .., Yn]
]

我现在想建立一个n x 2矩阵:

[
 [X1, Y1]
 [X2, Y2]
 ...
 [Xn, Yn]
]

但是我不知道该怎么做,因为PDL :: Matrix似乎不存在推送功能

谢谢您的帮助,

编辑1:

这就是我想做的事情:

sub GetCoordinates {
  my (@hl) = @_;
  my $Point;
  my $Points;

  foreach my $v (@hl) 
  {
    my %values = ($v =~ m/${regex_Coordinates}/g);

    if ($values{X} && $values{Y}) 
    {
        $Point = mpdl [$values{X},$values{Y}];
        push($Points, $Point);                  # DOES NOT EXIST
    }
  }
}

2 个答案:

答案 0 :(得分:2)

您可以打电话

$m->transpose

在2×n矩阵上。

答案 1 :(得分:1)

choroba答案有效。 这是另一个可行的解决方案,非常适合我的需求

my @Points

file read loop {
 push(@Points, vpdl [$PointX, $PointY]);
}

my $PointsMatrix = PDL::Matrix->pdl(\@Points); #nx2 Matrix

如果可以帮助!