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

Performance 仅计算矩阵平方对角线的快速方法,performance,matlab,matrix,vectorization,Performance,Matlab,Matrix,Vectorization,我有一个nxm矩阵V,我计算其中的平方S=V'*V。对于下面的计算,我只需要S的对角线,所以我写S=diag(V'*V)。然而,这有点浪费,因为我也在计算所有非对角元素。是否有一种快速方法只计算S的对角线元素?当然,我可以为循环使用,但是显式循环并不是在MATLAB中快速完成任务的方法 谢谢 这很简单: sum(conj(v).*v,1) 或 如果矩阵是实矩阵,可以简化为 sum(v.*v,1) 或 )谢谢,伙计-我相信你会回答的。你是我的官方bsxfunguru!我喜欢第三个,因为它基本上

我有一个
nxm
矩阵
V
,我计算其中的平方
S=V'*V
。对于下面的计算,我只需要
S
的对角线,所以我写
S=diag(V'*V)
。然而,这有点浪费,因为我也在计算所有非对角元素。是否有一种快速方法只计算
S
的对角线元素?当然,我可以为循环使用
,但是显式循环并不是在MATLAB中快速完成任务的方法

谢谢

这很简单:

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

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

sum(v.*v,1)


)谢谢,伙计-我相信你会回答的。你是我的官方
bsxfun
guru!我喜欢第三个,因为它基本上是矩阵积的定义。实际上,我需要对角线作为列向量,所以我将其修改为
sum(v.*v,1)
,但除此之外,它是完美的@DeltaIV很想看看这比您原来的解决方案快多少。@DeltaIV谢谢!此处不需要
bsxfun
,但:-)
sum(v.*v,1)
sum(v.^2,1)