仅计算矩阵平方的对角线的快速方法
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)
我有一个 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)