如何对不匹配大小的矩阵执行操作

时间:2017-04-04 16:11:21

标签: matlab matrix octave

A = rand(4,2);
B = rand(4,3)

现在,在对B(根,衍生等)执行某些操作后,我们得到一个新的矩阵B1,其尺寸为size(B1) = size(B)

我想要执行的操作

B.' * ( A - B1.')

B.'的每个元素与A相乘时,同时,在乘法之前,B1会从元素A中减去相应的元素。

最终尺寸必须是我们通常从B.' * A

的乘法获得的尺寸

注意 - 初始化矩阵的维度在每个运行时都会发生变化,因此无需手动操作

示例

让我们说

A = 2x2 
     [ x1, x2 ]
     [ y1, y2 ]

B = 2X1
     [a1]
     [b1]

B1 = 2x1
     [a11]
     [b11]

所以在B.' * A

的简单乘法中
 [(a1 * x1 + b1 * y1), (a1 * x2 + b1 * y2)]

我想减去B1这样

 [ (a1 * (x1-a11) + b1 * (y1-b11)),  (a1 * (x2-a11) + b1 * (y2-b11))]

不同大小的示例输入:

INPUTS

   B = 
    [ a1 b1; 

      a2 b2;  

      a3 b3;

      a4 b4]

  A = 

  [ x11 x12 x13; 

    x21 x22 x23;

    x31 x32 x33; 

    x41 x42 x43]

  B1 =

  [a10 b10;

   a20 b20;

   a30 b30;

   a40 b40]


Result =

 [b1(x11-b10)+b2(x21-b20)+b3(x31-b30)+b4(x41-b40) b1(x12-b10)+b2(x22-b20)+b3(x32-b30)+b4(x42-b40) b1(x13-b10)+b2(x23-b20)+b3(x33-b30)+b4(x43-b40);


 a1(x11-a10)+a2(x21-a20)+a3(x31-b30)+a4(x41-a40) a1(x12-a10)+a2(x22-a20)+a3(x32-a30)+a4(x42-a40) a1(x13-a10)+a2(x23-a20)+a3(x33-a30)+a4(x43-a40)]

1 个答案:

答案 0 :(得分:0)

我假设size(B,2) >= size(A,2)

A = rand(4,2);
B = rand(4,3);
B1 = rand(size(B)).*B;
res = B' * ( A - B1(:,1:size(A,2)))