将矩阵A的每个元素添加到矩阵B,得到A的扩展矩阵

时间:2017-04-19 21:06:41

标签: matlab

我想将矩阵A的每个元素添加到矩阵B,并使用扩展矩阵A作为新矩阵C

A = [1 2 3]

B =  
[10 20  
20 30]

必需的结果矩阵2x6:

C =  
[11 12 13 21 22 23;  
 21 22 23 31 32 33]

2 个答案:

答案 0 :(得分:1)

这是使用bsxfun -

的人
reshape(bsxfun(@plus, permute(B,[1,3,2]), A),size(B,1),[])

示例运行 -

>> A
A =
     1     2     3
>> B
B =
    10    20
    20    30
>> reshape(bsxfun(@plus, permute(B,[1,3,2]), A),size(B,1),[])
ans =
    11    12    13    21    22    23
    21    22    23    31    32    33

答案 1 :(得分:0)

您可以使用kronAB扩展为正确的尺寸,然后将它们添加到一起:

>> A2 = kron(A, ones(2, 2))

A2 =

   1   1   2   2   3   3
   1   1   2   2   3   3

>> B2 = kron(B, (1, 3))

B2 =

   10   10   10   20   20   20
   20   20   20   30   30   30

>> C = A2 + B2

C =

   11   11   12   22   23   23
   21   21   22   32   33   33

或者作为一个单行:

C = kron(A, ones(2, 2)) + kron(B, ones(1, 3))

如果AB的尺寸可变,您可以执行类似

的操作
C = kron(A, ones(size(B))) + kron(B, ones(size(A)))

Kronecker产品的属性保证了它始终按预期工作。