有没有一种在Matlab中高效计算三个(或更多)矩阵乘积对角线的方法?具体而言,我想要:
那我可以快速地这样做:
diag(A'*B*A)
当A和B都很大时,可能需要很长时间。如果只有两个矩阵:
diag(B*A)
那我可以快速地这样做:
sum(B.*A',2)
现在我要计算三个矩阵的对角线,方法如下:
C = B*A;
ans = sum(A'.*C',2);
这很有帮助,但第一步操作(C = B*A)仍然需要很长时间。整个过程必须多次重复,导致我的代码运行需要几周的时间。例如,B大约是15k x 15k,A大约是32k x 15k。而且没有稀疏性。
C
),因为为了进行第二次乘法运算,需要使用C
中的所有元素。 - Luis Mendo