1

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

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

4

2 回答 2

7

如果您乘以A10 的元素向量,那么简单地乘以标量不是更容易吗?

B = A * 10;

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

B = bsxfun(@times, A, x);
于 2013-05-06T07:27:01.853 回答
1

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

repX = repmat(x, [size(A, 1), 1, size(A, 3)]);
B = A.*repX;
于 2013-05-06T02:13:44.367 回答