在我正在研究的Perl脚本中,我需要从其他几个矩阵中构建一个矩阵.我看过CPAN中的几个模块(Math :: Matrix,PDL :: Matrix,Math :: Cephes :: Matrix),但这些模块似乎都不支持这个.
在Octave,这很容易.这是一个类似于我正在尝试做的事情的例子:
octave:1> A = [ 1, 2; 3, 4 ]
A =
1 2
3 4
octave:2> B = [ 5, 6; 7, 8 ]
B =
5 6
7 8
octave:3> C = [ 9, 10; 11, 12 ]
C =
9 10
11 12
octave:4> D = [ 13, 14; 15, 16 ]
D =
13 14
15 16
octave:5> E = [ A, B; C, D ]
E =
1 2 5 6
3 4 7 8
9 10 13 14
11 12 15 16
Run Code Online (Sandbox Code Playgroud)
似乎试图这样做我自己会很快变得混乱,这可能是为什么这些模块不支持它...有没有其他人曾经有过这个需要?你解决了吗?
滚动你自己不是太痛苦.
use List::Util qw(max);
@A = ([1, 2], [3, 4]);
@B = ([5, 6], [7, 8]);
@C = ([9, 10], [11, 12]);
@D = ([13, 14], [15, 16]);
sub hmerge(\@\@;\@\@\@\@\@\@) {
my @ret;
for my $i (0 .. max map $#$_, @_) {
push @ret, [map @{$$_[$i]}, @_];
}
@ret;
}
@E = (hmerge(@A, @B), hmerge(@C, @D));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1198 次 |
| 最近记录: |