我对 Perl 比较陌生,需要进行相对复杂的矩阵计算,不知道要使用什么数据结构。
不确定这是否是合适的论坛,但假设您在 Perl的多维数组中有以下矩阵:
0.2 0.7 0.2
0.6 0.8 0.7
0.6 0.1 0.8
0.1 0.2 0.9
0.6 0.3 0.0
0.6 0.9 0.2
我正在尝试识别此矩阵中对应于高于给定阈值的连续值的列段,例如0.5
例如,如果我们对这个矩阵设置阈值,我们有:
0 1 0
1 1 1
1 0 1
0 0 1
1 0 0
1 1 0
如果我们现在关注第一列:
0
1
1
0
1
1
我们可以看到有两个连续的段:
0 1 1 0 1 1
- 第一个轨道(一个序列)以索引1开始,以索引2结束
- 第二个轨道(一个序列)以索引4开始,以索引5结束
我想检测原始矩阵中的所有这些轨道,但我不知道如何进行或哪些 Perl 数据结构最适合此。
理想情况下,我想要一些易于索引的东西,例如假设我们使用变量tracks
,我可以存储第一列(索引 0)的索引,如下所示:
# First column, first track
$tracks{0}{0}{'start'} = 1;
$tracks{0}{0}{'end'} = 2;
# First column, second track
$tracks{0}{1}{'start'} = 4;
$tracks{0}{1}{'end'} = 5;
# ...
在 Perl 中我可以使用哪些好的数据结构和/或库来解决这个问题?