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

Fast way to compute only the diagonal of the square of a matrix

我有一个 nxm 矩阵 V,我计算了它的平方 S=V'*V。对于我接下来的计算,我只需要 S 的对角线,所以我写 s=diag(V'*V)。然而,这有点浪费,因为我也在计算所有非对角线元素。是否有 快速 方法来仅计算 S 的对角线元素?当然,我可以使用 for 循环,但显式循环并不是在 MATLAB 中执行操作的快速方法。

这很简单:

sum(conj(v).*v,1)

sum(abs(v).^2,1)

如果矩阵是实数,可以简化为

sum(v.*v,1)

sum(v.^2,1)