Perl中的矩阵矩阵

9 perl matrix

在我正在研究的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)

似乎试图这样做我自己会很快变得混乱,这可能是为什么这些模块不支持它...有没有其他人曾经有过这个需要?你解决了吗?

eph*_*ent 5

滚动你自己不是太痛苦.

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)