我有一个向量行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]
提前谢谢。
答案 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)