1

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

X1 Y1
X2 Y2
X3 Y3
...
Xn Yn

这个想法是建立这个坐标的矩阵。

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

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

然后我得到一个 2 xn 矩阵:

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

我现在想构建 anx 2 Matrix :

[
 [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
    }
  }
}
4

2 回答 2

2

你可以打电话

$m->transpose

在 2×n 矩阵上。

于 2019-02-19T17:48:32.270 回答
1

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

my @Points

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

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

如果它可以帮助!

于 2019-02-21T10:21:07.733 回答