izh*_*hak 8 matlab matrix octave
我有两个矩阵A和B,我想得到的是:
trace(A*B)
Run Code Online (Sandbox Code Playgroud)
如果我没有记错,这就叫做Frobenius内在产品.
我关注的是效率问题.我只是害怕这种直接的方法将首先完成整个乘法(我的矩阵是数千行/列),然后只记录产品,而我真正需要的操作则更加简单.是否有功能或语法有效地执行此操作?
正确......总结元素产品会更快:
n = 1000
A = randn(n);
B = randn(n);
tic
sum(sum(A .* B));
toc
tic
sum(diag(A * B'));
toc
Run Code Online (Sandbox Code Playgroud)
Elapsed time is 0.010015 seconds.
Elapsed time is 0.130514 seconds.
Run Code Online (Sandbox Code Playgroud)