将矩阵A的每行中的每个值乘以矩阵B中特定行的每个对应值

Kat*_*tOd 3 matlab matrix matrix-multiplication


我有一个A=[m,n]矩阵和一个B=[n,l]矩阵.

A =
[1     2     3   
 4     5     6   
 7     8     9   
 10    11    12]
Run Code Online (Sandbox Code Playgroud)

为简单起见,我们假设l=1,B实际上是一个向量B=[n,1]

B =   [100    10     1]
Run Code Online (Sandbox Code Playgroud)

我想将每一行中的所有值乘以A相应的值B- 列方式.

我知道如何"手动":

C=[A(:,1)*B(:,1), A(:,2)*B(:,2), A(:,3)*B(:,3)]
Run Code Online (Sandbox Code Playgroud)

这是我想要的结果:

C = [100          20           3  
     400          50           6  
     700          80           9  
     1000         110          12]
Run Code Online (Sandbox Code Playgroud)

不幸的是我的真实生活矩阵有点大,例如(D=[888,1270])所以我正在寻找更聪明/更快的方法来做到这一点.

Ste*_*fin 6

前R2016b:

C=bsxfun(@times,A,B)

C =
     100          20           3
     400          50           6
     700          80           9
    1000         110          12
Run Code Online (Sandbox Code Playgroud)

R2016b及更高版本:

在MATLAB®R2016b及更高版本中,您可以直接使用运算符代替bsxfun,因为运算符独立支持数组的隐式扩展.

C = A .* B
Run Code Online (Sandbox Code Playgroud)