【发布时间】:2019-02-13 17:47:15
【问题描述】:
假设我有一个矩阵:
A = [ a, b, c;
d, e, f ];
还有一个向量:
b = [ x;
y;
z ];
我想要的是结果矩阵:
C = [ a*x, b*y, c*z;
d*x, e*y, f*z ];
我该怎么做? 本质上,我想将矩阵(维度:mxn)与向量(nx1)相乘并得到结果矩阵mxn。
根据 cmets 的要求(使用八度版本3.8.0):
octave> A = [ 1,2,3;4,5,6]; B=[10;20;30];
octave> A*B
ans =
140
320
octave> A.*B
error: product: nonconformant arguments (op1 is 2x3, op2 is 3x1)
octave> bsxfun(@times, A, B)
error: bsxfun: nonconformant dimensions: 2x3 and 3x1
【问题讨论】:
-
你试过将它们相乘吗?
-
b 不是标量。它是您喜欢的矩阵或列向量
-
@matzeri 修正了错字。
-
请参阅
.*的documentation。如果您使用的是 MATLAB ≤ R2016a,则需要bsxfun。在 Octave 和 MATLAB ≥ R2016b 中,可以直接使用.*(调整尺寸后) -
'是复共轭转置。您应该在这里使用简单的转置.',因为它是您打算采用的转置。安迪已经发布了。你可以继续。