通过向量元素乘以矩阵

时间:2013-05-06 01:39:27

标签: matlab matrix-multiplication elementwise-operations

假设我有一个矩阵A = rand(2,14,24)和一个向量x = 10 * 1(1,14)

我想要A和x的元素相乘,使得对于所有j = 1,2,...,B(i,j,k)= A(i,j,k)* x(j)。 我希望能够在不运行循环的情况下完成此操作。在matlab中执行此操作的最有效方法是什么?

2 个答案:

答案 0 :(得分:7)

如果你将A乘以10的元素向量,那么简单地乘以标量会不会更容易?

B = A * 10;

对于一般情况,此处不需要repmat逻辑。 bsxfun可以做到这一点(而且速度更快)。 :

B = bsxfun(@times, A, x);

答案 1 :(得分:1)

您首先使用repmat平铺x正确的次数,然后进行逐元素乘法。

repX = repmat(x, [size(A, 1), 1, size(A, 3)]);
B = A.*repX;