我有以下代码:
A = rand(N1,N2);
b = rand(1,N1);
B = zeros(N1,N2);
for i=1:N1
for j=1:N2
B(i,j) = A(i,j)*b(i);
end
end
问题是如何以矢量运算形式编写它?类似于B(:,:) = A(:,:).*b(:)
。
答案 0 :(得分:7)
简单使用bsxfun
:
B = bsxfun(@times, A, b')
答案 1 :(得分:0)
您也可以尝试:
B = A*.(repmat(b,N2,1))';
此处,您首先生成N2
重复版本的向量b
并将其与A
以元素方式相乘