如何仅计算Octave中矩阵乘积的对角线?
问题描述:
Octave有没有计算和存储矩阵乘积的对角线的方法?如何仅计算Octave中矩阵乘积的对角线?
基本上像做:vector = diag(A*B);
我不关心任何的A*B
除对角线上的值。矩阵大小大约为80k x 12
和12 x 80k
,所以即使我不在乎速度/额外的内存,它也不适合RAM。
奇怪的是,由于Octave是一个庞大的数据集和对角线的包非常重要,所以它应该是可能的。
答
对角线中的第一个元素是A的第一行和B的第一列的标量乘积。对角线中的第二个元素是A的第二行和B的第二列的标量乘积。
换句话说:
vector = sum(A.*B',2);
答
这是你如何能做到这一点在MATLAB(可能是类似于八度语法):
vector = sum(A.*B',2);
这只会计算操作A*B
的结果对角线作为列向量vector
。
我看到你很好地利用了5分钟的宽限期进行编辑。 ;) – gnovice 2010-02-20 04:53:31
我很高兴宽限期存在。我似乎只在我提交时看到我的重大错误。 :) – Jonas 2010-02-20 12:46:45