【问题标题】:Perl PDL : points coordinates and matrix constructionPerl PDL:点坐标和矩阵构造
【发布时间】:2019-07-13 06:51:35
【问题描述】:

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

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

【问题讨论】:

    标签: perl matrix pdl


    【解决方案1】:

    你可以打电话

    $m->transpose
    

    在 2×n 矩阵上。

    【讨论】:

    • 感谢您的回答。是的,您的权利,但只是想知道,是否有解决方案围绕制作向量 [Xi, Yi] 并将它们作为行推入矩阵?
    • 能否将用于填充矩阵的代码包含在问题中?
    • 有什么想法吗?在我的程序结构中,能够将向量推入矩阵真的很有帮助......
    【解决方案2】:

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

    my @Points
    
    file read loop {
     push(@Points, vpdl [$PointX, $PointY]);
    }
    
    my $PointsMatrix = PDL::Matrix->pdl(\@Points); #nx2 Matrix
    

    如果有帮助的话!

    【讨论】:

      猜你喜欢
      • 2014-02-21
      • 2019-11-17
      • 2014-10-30
      • 2015-12-17
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 2017-09-06
      • 2015-04-24
      相关资源
      最近更新 更多