将向量的每个元素与矩阵相乘

时间:2012-10-12 05:40:34

标签: matlab

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

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

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

2 个答案:

答案 0 :(得分:3)

我认为Danil Asotsky的回答是正确的。他在这里利用了操作的线性。我只想提供另一种解决方案,使用不依赖于此线性属性的Kronecker张量积,因此仍然适用于sum以外的操作:

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

在我当地时间已经太晚了,我不想解释为什么这样有效的细节,如果你无法从matlab帮助和维基百科中找到答案,那么在下面评论我会为你解释。

答案 1 :(得分:2)

你有不依赖于我的单个矩阵M吗? 在这种情况下,sum(v(i)* M)= sum(v(i))* M。

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

v_sum = sum(v);
lala_sum = v_sum * M;