按行将一个数组添加到另一个数组

Row wise Addition of one array to another

我有一个 1x64 大小的数组 A 和另一个 64x1806 大小的数组 B。我想将 A 添加到 B 中,将 A 的第一个元素添加到 B 的第一行,依此类推,直到将 64 个元素添加到 B 的第 64 行。我如何在 matlab 中执行此操作?例如

A= (4 5 6 7) 
B=  (3 4 5;
    4 5 6;
    4 5 6;
    3 4 5 )
c=(4+3) (4+4) (4+5);
  (5+4) (5+5) (5+6);
  (6+4) (6+5) (6+6);...

如果我理解正确的话,你可能想先使用 repmat 到 "repeat" A 的每一列,当它的大小与 B 相同时,只需将 B 添加到它:

C = repmat(A', 1, size(B, 2)) + B

使用bsxfun添加A转置和Belement-wise单例扩展:

A = [4 5 6 7]
B = [3 4 5; 4 5 6; 4 5 6; 3 4 5];
C = bsxfun(@plus, A.', B);

或者,从 Matlab R2016b 开始,您可以直接使用 +,感谢 implicit singleton expansion:

C = A.' + B;