我想我已经弄明白了。如果
MatrixA
是
k x n
和
MatrixB
n x m
维度的:
Product =
ADDCOLUMNS(
CROSSJOIN(VALUES(MatrixA[i]), VALUES(MatrixB[j])),
"val",
SUMX(
ADDCOLUMNS(
SELECTCOLUMNS(GENERATESERIES(1, DISTINCTCOUNT(MatrixA[j])), "Index", [Value]),
"A", LOOKUPVALUE(MatrixA[val], MatrixA[i], [i], MatrixA[j], [Index]),
"B", LOOKUPVALUE(MatrixB[val], MatrixB[i], [Index], MatrixB[j], [j])),
[A] * [B]))
这个
CROSSJOIN
创建包含列的新表
[i]
和
[j]
它有
k x m
i
和
j
此交叉联接表中的行对,该单元格的值计算为
我
基质
具有
列
矩阵B
. 这个
GENERATESERIES
比特创造了一个
Index
n
.
例如,当
i = 3
和
j = 2
ADDCOLUMNS(
SELECTCOLUMNS(GENERATESERIES(1, DISTINCTCOUNT(MatrixA[j])), "Index", [Value]),
"A", LOOKUPVALUE(MatrixA[val], MatrixA[i], 3, MatrixA[j], [Index]),
"B", LOOKUPVALUE(MatrixB[val], MatrixB[i], [Index], MatrixB[j], 2))
生成表
Index | A | B
------|-----|----
1 | -1 | 3
2 | 2 | -1
3 | 0 | -4
其中
[A]
基质
以及
[B]
列是
.