快速计算矩阵平方的对角线的方法

Del*_*aIV 3 performance matlab matrix vectorization

我有一个nxm矩阵V,我计算正方形S=V'*V.对于我的后续计算,我只需要对角线S,所以我写s=diag(V'*V).然而,这有点浪费,因为我也在计算所有非对角元素.有没有一种快速的方法只计算对角元素Sfor当然,我可以使用循环,但显式循环不是在MATLAB中做事的快捷方式.

谢谢!!!

Lui*_*ndo 5

这很简单:

sum(conj(v).*v,1)
Run Code Online (Sandbox Code Playgroud)

要么

sum(abs(v).^2,1)
Run Code Online (Sandbox Code Playgroud)

如果矩阵是真实的,你可以简化为

sum(v.*v,1)
Run Code Online (Sandbox Code Playgroud)

要么

sum(v.^2,1)
Run Code Online (Sandbox Code Playgroud)