3


我有一个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]),所以我正在寻找更智能/更快的方法来做到这一点。

4

2 回答 2

6

R2016b 之前:

C=bsxfun(@times,A,B)

C =
     100          20           3
     400          50           6
     700          80           9
    1000         110          12

R2016b 及更高版本:

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

C = A .* B
于 2013-06-01T11:06:24.100 回答
2

如果I > 1, 那么你将不得不重新排序Bfirst 的尺寸与 a 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
于 2013-06-01T11:08:38.840 回答