如何在成对矩阵上执行标量积?

时间:2012-07-16 22:10:13

标签: j

我有一个包含对的矩阵M(即大小为2的数组)。给定一对p,如何获得包含M'的标量积和p的每个元素的结果的二维矩阵M

    (0, 0) (0, 1)                             8 5
M = (1, 0) (1, 1)       p = (2, 2)       M' = 5 2
    (2, 0) (2, 1)                             4 1

Mp已定义:

M =. 3 2 2 $ 0 0 0 1 1 0 1 1 2 0 2 1
p =. 2 2

我在J:

中实现了标量积
sp =. +/ @: *: @: -

它适用于成对:

    0 0 sp p
8
    0 1 sp p
5

但由于篇幅不长,不在整个矩阵上:

    p sp M
|length error: sp
|   p     sp M

我该如何处理?对于J天才来说这可能很容易,但我只是一个可怜的新手。

1 个答案:

答案 0 :(得分:3)

使用

p sp"1 M
 8 5
 5 2
 4 1

您希望此处sp读取M的第一级单元格:

<"1 M
┌───┬───┐
│0 0│0 1│
├───┼───┤
│1 0│1 1│
├───┼───┤
│2 0│2 1│
└───┴───┘

所以sp"1适用于每个单元格(p sp 0 0p sp 0 1等)。 sp(无限等级)尝试对整个矩阵M应用sp一次。

同样sp"2sp应用于M的第二级单元格

<"2 M
 ┌───┬───┬───┐
 │0 0│1 0│2 0│
 │0 1│1 1│2 1│
 └───┴───┴───┘

所以

p sp"2 M
 8 5
 2 5
 0 5

(对:p sp 2 2 $ 0 0 0 1p sp 2 2 $ 1 0 1 1p sp 2 2 $ 2 0 2 1