2017-01-23 1 views
1

J'ai un tableau A de taille 1x64 et un autre tableau B de taille 64x1806. Je veux ajouter A dans B de telle sorte que 1er élément de A est ajouté à la 1ère rangée de B et ainsi de suite jusqu'à 64 élément ajouté à la 64e rangée de B. comment puis-je le faire dans Matlab? Par exempleRow wise Ajout d'un tableau à un autre

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);... 

Répondre

0

Si je comprends bien, vous pouvez utiliser repmat premier à « répéter » A pour chaque colonne, et quand il a la même taille que B, ajoutez B il:

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

si j'ai 3 matrices 'A = [1; 2; 3] B = [2 3 4; 5 6 7; 8 9 0] C = [3 4 5 6; 9 8 7 6; 5 4 2 1] 'et je veux les ajouter de cette façon D =' [(1 + 2 + 3) (1 + 2 + 4) (1 + 2 + 5) (1 + 2 + 6) (1 + 3 + 3) (1 + 3 + 4) (1 + 3 + 5) (1 + 3 + 6) (1 + 4 + 3) (1 + 4 + 4) (1 + 4 + 5) (1+ 4 + 6); (2 + 5 + 9) (2 + 5 + 8) (2 + 5 + 7) (2 + 5 + 6) (2 + 6 + 9) (2 + 6 + 8) (2 + 6 + 7) (2 + 6 + 6) (2 + 7 + 9) (2 + 7 + 8) (2 + 7 + 7) (2 + 7 + 6); (3 + 8 + 5) (3 + 8 + 4) (3 + 8 + 2) (3 + 8 + 1) (3 + 9 + 5) (3 + 9 + 4) (3 + 9 + 2) (3 + 9 + 1) (3 + 0 + 5) (3 + 0 + 4) (3 + 0 + 2) (3 + 0 + 1)] 'alors comment peut-on étendre cette méthode? –

5

utilisez bsxfun pour ajouter A transposé et B élément-sage avec expansion singleton:

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

Ou, de Matlab R2016b, vous pouvez utiliser + directement, grâce à implicit singleton expansion:

C = A.' + B;