如何在没有for循环的情况下计算此总和?

时间:2014-03-27 22:42:33

标签: arrays matlab vectorization

特别是我对这个总结感兴趣。它使用k两次,但使用sum我不知道如何获取索引。

仅考虑总结:

summatory = sum( L(i, 1:j-1) * L(j, 1:j-1) );

显然是错误的。

如果没有for循环,我怎么能这样做?

My problem

2 个答案:

答案 0 :(得分:3)

这是1x(j-1)向量和(j-1)x1向量之间的内积:

krange = 1:j-1;
summatory = L(i, krange) * L(j, krange)';

如果您使用了元素明确的产品运算符.*而不是矩阵乘积*,那么您的代码也会起作用(现在已经修复了语法)。

答案 1 :(得分:3)

使用向量代数计算内积(即@BenVoigt所证明的v * v'),或使用sum,但使用元素乘积(.*):

summatory = sum( L(i, 1:j-1) .* L(j, 1:j-1) );