1

我有一个向量v和一个矩阵M。我想将v的每个元素与M相乘,然后对所有结果矩阵求和。

for i=1:length(v)
    lala(:,:,i) = v(i).*M;
end
sum(lala, 3)

没有for循环可以做到这一点吗?

4

2 回答 2

3

我认为丹尼尔·阿索茨基的回答是正确的。他在这里利用了操作的线性。我只想提供另一个解决方案,使用不依赖于该线性属性的 Kronecker 张量积,因此仍然可以使用以下操作sum

kvM = kron(v,M);
result = sum(reshape(kvM,[size(M) numel(v)]),3)

在我当地时间已经太晚了,我不想解释为什么这个工作的细节,如果你不能从 matlab 帮助和维基百科中弄清楚,然后在下面评论,我会为你解释。

于 2012-10-12T06:07:09.690 回答
2

您是否有不依赖于 i 的单个矩阵 M?在这种情况下 sum(v(i) * M) = sum(v(i)) *M。

例如,您将获得代码的预期结果:

v_sum = sum(v);
lala_sum = v_sum * M;
于 2012-10-12T05:51:35.340 回答