我们有一个列向量mx 1和一个矩阵mx n。对于列向量中第i行中的值,我们希望将此值与矩阵的同一行i中的每个值相乘,然后将所有这些值相加。将对向量中的每一行i重复此操作,以使我们最终得到一列向量。
想要使用for循环执行此操作,到目前为止(其中M是矩阵,v是我们开始的初始列向量),它返回一个错误,指出“下标分配维不匹配。”,所以我想我搞砸了以某种方式查看我的索引:
for i = 1:nv
for k = 1:mM
columnvectorendresult(i,) = columnvectorendresult(i,) + v(i,:)*M(i,:);
end
end
不知道我是否已经接近目前为止,但还没有完全了解这一点。有什么建议?
如果您想在乘法后求和,使用乘法的分布属性来回答knedlsepp是合理的选择。如果您想使用除求和或差之外的其他运算,则可以更一般地应用以下答案
开始了:
%// columnvector m x 1
a = randi(5,3,1)
%// matrix m x n
B = randi(5,3,2)
%// multiplication
Ba = bsxfun(@times,B,a(:))
%// sum
BaSum = sum(Ba,2)
例子:
a =
3
4
4
B =
2 5
3 1
1 1
Ba =
6 15
12 4
4 4
BaSum =
21
16
8
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句