我有一个A=[m,n]
矩阵和一个B=[n,l]
矩阵。
A =
[1 2 3
4 5 6
7 8 9
10 11 12]
为简单起见,我们假设为l=1
,因此B
实际上是一个向量B=[n,1]
B = [100 10 1]
我希望将A
每行中的所有值乘以相应的B
值 - 列式。
我知道如何“手动”:
C=[A(:,1)*B(:,1), A(:,2)*B(:,2), A(:,3)*B(:,3)]
这是我想要的结果:
C = [100 20 3
400 50 6
700 80 9
1000 110 12]
不幸的是,我的真实生活矩阵有点大,例如(D=[888,1270]
)所以我正在寻找更聪明/更快的方法。
答案 0 :(得分:6)
C=bsxfun(@times,A,B)
C =
100 20 3
400 50 6
700 80 9
1000 110 12
在MATLAB®R2016b及更高版本中,您可以直接使用运算符而不是bsxfun
,因为运算符独立支持数组的隐式扩展。
C = A .* B
答案 1 :(得分:2)
如果I > 1
,那么您必须先使用B
重新排序permute
的尺寸,
>> B = [100 10 1; 1 10 100];
>> C = bsxfun(@times, A, permute(B, [3 2 1]));
>> C
C(:,:,1) =
100 20 3
400 50 6
700 80 9
1000 110 12
C(:,:,2) =
1 20 300
4 50 600
7 80 900
10 110 1200