为什么APL中的+ .x适用于矩阵和向量?

时间:2013-12-06 12:43:08

标签: apl inner-product

我明白,它基本上是通过添加减少乘法,但是什么是魔法,使它适用于矢量和矩阵。

对于矢量,我们可以使用+/ A x B来执行相同的操作。但这不适用于矩阵,因为x只会生成2 2矩阵,减少它会导致2向量。

对书进行矩阵乘法,减少每个相应的pow和列乘法,在对向量做同样的操作时会产生2 2矩阵。

那么它如何运作呢?

2 个答案:

答案 0 :(得分:6)

内在产品可以定义为:

A f.g B   ←→   f/¨ (⊂[¯1+⍴⍴A]A) ∘.g ⊂[0]B

即:将A沿其最后一个轴切成切片,沿着第一个轴对B执行相同操作,然后将A中的每个切片与来自{{1}的每个切片合并使用B,最后使用g执行缩减。

如果fA是矩阵,则切片将是B的行和A的列:

B

如果┌───┐ ┌───┐ │0 1│ │4 5│ │ │ +.× │ │ │2 3│ │6 7│ └───┘ └───┘ ┌───┐ ┌─┬─┐ │0 1│ │4│5│ +/¨ ├───┤ ∘.× │ │ │ │2 3│ │6│7│ └───┘ └─┴─┘ ┌─────────┬─────────┐ │0 1 × 4 6│0 1 × 5 7│ +/¨ ├─────────┼─────────┤ │2 3 × 4 6│2 3 × 5 7│ └─────────┴─────────┘ ┌────────────┬────────────┐ │+/ 0 1 × 4 6│+/ 0 1 × 5 7│ ├────────────┼────────────┤ │+/ 2 3 × 4 6│+/ 2 3 × 5 7│ └────────────┴────────────┘ ┌─────┐ │ 6 7│ │ │ │26 31│ └─────┘ A是向量,那么切片将自己为BA,并且您得到了

B

在任何情况下,要使内部产品起作用,A +.× B ←→ +/ A×B ⍝ if A and B are vectors 的最后一个轴需要匹配A第一个轴的长度。

答案 1 :(得分:1)

对于内部产品,无论它是什么,要处理两个矩阵,左参数的最后一个维度必须与右边的第一个维度相匹配。

因此,形状为5 2 3 2的矩阵左参数将使用矩形右参数,其形状为2 3 9. 3 2匹配2 3.结果的形状将是左参数的形状带有右边形状的最后一个元素在没有第一个元素的情况下被论证,在本例中为5 2 3 3 9。

在矢量参数的情况下,内部单维度将起作用。

  (1 3 p 1 2 3) +.x 3 1 p 1 2 3         (matrices match)

14

  1 2 3 +.x 3 1 p 1 2 3                

14

  (1 3 p 1 2 3) +.x 1 2 3

14

  1 2 3 +.x 1 2 3

14