【问题标题】:How do I multiply more than 2 matrices in one function? PERL如何在一个函数中乘以 2 个以上的矩阵? PERL
【发布时间】:2012-03-18 13:20:11
【问题描述】:

我有一个与两个一起工作的子例程。可以在子程序内调用子程序吗?

【问题讨论】:

标签: arrays perl reference matrix subroutine


【解决方案1】:

最简单的方法是一点递归——只需改变这个:

my $ref1 = $_[0];
my $ref2 = $_[1];

到这里:

my $ref1 = shift;
my $ref2 = shift;

还有这个:

return @product;

到这里:

if(@_ > 0)
  { return &matrix(\@product, @_); }
else
  { return @product; }

但最有效的方法是首先检查各种数组的维度,从而确定执行乘法的最佳顺序。 (数组乘法,虽然不是可交换的,但是是关联的,如果不是所有的数组都具有相同的维度,那么A(BC) 可能比(AB)C 更昂贵或更便宜。例如,如果维度是 1 -by-100、100-by-1 和 1-by-100,然后 (AB)C 创建一个 1-by-1 矩阵作为中间步骤,而 A(BC) 创建一个 100-by-100 矩阵作为中间步骤步骤。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多