如何在Octave中仅计算矩阵乘积的对角线?

Chr*_*s H 14 matlab matrix octave matrix-multiplication diagonal

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

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

我不关心A*B除了对角线上的任何值.矩阵大小是围绕80k x 1212 x 80k,所以即使我不关心速度/额外的内存它只是惯于适合在RAM中.

奇怪的是,因为Octave是一个包含大量数据集和对角线的包非常重要,所以它应该是可能的.

Jon*_*nas 19

对角线中的第一个元素是A的第一行与B的第一列的标量乘积.对角线中的第二个元素是A的第二行和B的第二列的标量积.

换一种说法:

vector = sum(A.*B',2);
Run Code Online (Sandbox Code Playgroud)


gno*_*ice 9

这是你在MATLAB中做到的方法(可能类似于Octave语法):

vector = sum(A.*B',2);
Run Code Online (Sandbox Code Playgroud)

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