Row wise将一个阵列添加到另一个阵列
问题描述:
我有一个1x64大小的阵列A和另一个阵列B的大小为64x1806。我想以A的第一个元素被添加到B的第一行,等到64的元素被添加到B的第64行这样的方式将A添加到B.我怎样才能在matlab中做到这一点?例如Row wise将一个阵列添加到另一个阵列
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第一个“重复”一种每列,且当其具有大小为B相同,只是增加B到它:
C = repmat(A', 1, size(B, 2)) + B
答
使用bsxfun
到添加A
转置和B
单元素扩展:
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;
如果我有3点矩阵'A = [1; 2; 3) B = [2 3 4; 5 6 7; 8 9 0] C = [3 4 5 6; 9 8 7 6; (1 + 2 + 4)(1 + 2 + 5)(1 + 2 + 6)(1) (1 + 4 + 4)(1 + 4 + 5)(1 + 3 + 5)(1 + 3 + 4 + 6); (2 + 5 + 9)(2 + 5 + 8)(2 + 5 + 7)(2 + 6 + 8) (2 + 7 + 6)(2 + 7 + 9)(2 + 7 + 8)(2 + 7 + 7) (3 + 8 + 1)(3 + 9 + 5)(3 + 8 + 4)(3 + 8 + (3 + 9 + 1)(3 + 0 + 5)(3 + 0 + 4)(3 + 0 + 2)(3 + 0 + 1)]'那么这个方法怎么能被扩展呢? –