15

Octave 有没有办法只计算和存储矩阵乘积的对角线?

基本上喜欢做:vector = diag(A*B);

A*B除了对角线上的值,我不关心任何值。矩阵大小在80k x 12和左右12 x 80k,所以即使我不关心速度/额外内存,它也根本不适合 RAM。

奇怪,由于 Octave 是一个大数据集的包,对角线非常重要,所以应该是可以的。

4

3 回答 3

22

对角线上的第一个元素是 A 的第一行与 B 的第一列的标量积。对角线上的第二个元素是 A 的第二行与 B 的第二列的标量积。

换句话说:

vector = sum(A.*B',2);
于 2010-02-20T04:43:56.393 回答
11

这就是您在 MATLAB 中的做法(可能类似于 Octave 语法):

vector = sum(A.*B',2);

这将仅将运算的结果对角线计算A*B为列向量vector

于 2010-02-20T04:44:54.847 回答
0

实际上我认为这是A的第一行与B的第一的点积......第二个对角线元素是第二行和第二列的点积......等等

于 2010-02-20T04:45:35.313 回答