我有一个 nxm
的矩阵 V
,我要计算它的平方 S=V'*V
。接下来的计算中,我只需要 S
的对角线元素,所以我写成了 s=diag(V'*V)
。然而,这有点浪费,因为我也在计算所有的非对角线元素。有没有一种快速的方法只计算 S
的对角线元素?当然,我可以使用 for
循环,但显式循环不是在 MATLAB 中执行任务的快速方式。
我有一个 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)
bsxfun
大师!我喜欢第三个,因为它基本上就是矩阵乘积的定义。实际上我需要对角线作为列向量,所以我将其修改为sum(v.*v,1)'
,但除此之外它是完美的!! - DeltaIVbsxfun
:-) - Luis Mendo