Matlab 如何仅计算八度矩阵乘积的对角线?

Matlab 如何仅计算八度矩阵乘积的对角线?,matlab,matrix,octave,matrix-multiplication,diagonal,Matlab,Matrix,Octave,Matrix Multiplication,Diagonal,有没有办法在倍频程中只计算和存储矩阵乘积的对角线 基本上喜欢这样做:vector=diag(A*B) 我不关心A*B的任何值,除了对角线上的值。矩阵大小约为80k x 12和12 x 80k,因此即使我不关心速度/额外内存,它也无法放入RAM中 奇怪的是,因为倍频程是一个庞大数据集的包,对角线非常重要,所以它应该是可能的。对角线中的第一个元素是a的第一行与B的第一列的标量积。对角线中的第二个元素是a的第二行与B的第二列的标量积 换言之: vector = sum(A.*B',2); 这是如何在

有没有办法在倍频程中只计算和存储矩阵乘积的对角线

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

我不关心
A*B
的任何值,除了对角线上的值。矩阵大小约为
80k x 12
12 x 80k
,因此即使我不关心速度/额外内存,它也无法放入RAM中


奇怪的是,因为倍频程是一个庞大数据集的包,对角线非常重要,所以它应该是可能的。

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

换言之:

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

这是如何在MATLAB中实现的(可能类似于倍频程语法):


这将只计算运算的结果对角线,作为列向量,实际上我认为它是A的第一行与B的第一列的点积。。。第二对角线元素是第二行和第二列的点积。。。etc

我看到你很好地利用了5分钟的宽限期进行编辑我很高兴有宽限期。我似乎只在点击提交时才看到我的主要错误。:)
vector = sum(A.*B',2);