矢量时间矩阵 - 两种情况

时间:2014-05-27 18:43:36

标签: matlab vector matrix vectorization matrix-multiplication

我有一个向量行b = [b1 b2 b3 b4]和一个矩阵M = [m1 m2 m3 m4],其中m1,m2,m3和m4是大小为N的列向量。

我想执行乘法运算,以便在Matlab中得到以下结果: Result = [b1*m1 b2*m2 b3*m3 b4*m4]

以及如果B = [b11 b12 b13; b21 b22 b23;b31 b32 b33 b34;b41 b42 b43 b44]我将如何获得:

Result2 = [b11*m1 + b12*m2 + b13*m2;
           b21*m1 + b22*m2 + b23*m2;
           b31*m1 + b32*m2 + b33*m2;
           b41*m1 + b42*m2 + b43*m2]

提前谢谢。

3 个答案:

答案 0 :(得分:3)

如果我理解正确的话:

bsxfun(@times,m,b)

答案 1 :(得分:2)

对于第一个问题,我认为natan's answer非常适合那里。

对于第二个问题 -

t1 = bsxfun(@times,[M(:,1) M(:,2) M(:,2)],permute(B,[3 2 1]))
Result2 = sum(reshape(permute(t1,[1 3 2]),size(t1,1)*size(t1,3),[]),2)

如果您需要最终结果为Nx4尺寸,请使用此 - reshape(Result2,[],4)

注意:您可能感兴趣的一个非常相似的问题 - bsxfun implementation in matrix multiplication

答案 2 :(得分:1)

您可以使用diag函数创建一个对角矩阵,您可以使用该矩阵对矩阵进行后乘:

M*diag(b)