Matlab: add vector to matrix

olamundo picture olamundo · Sep 22, 2011 · Viewed 8k times · Source

I have a 3XN matrix representing a list of 3D coordinates,something like

33    33    33    33    34    34    34    34    34    35    35
17    18    19    20    16    17    18    19    20    16    17
10    10    10    10    10    10    10    10    10    10    10 

I want to shift all coordinates by some vector v=[1 2 3], that is add the 3D vector to each column of the matrix.

I know how to do that with a for loop, but how can I do it without a loop? Surely there's a way...

Answer

Nasser picture Nasser · Sep 22, 2011

you mean like this?

D=[33    33    33    33    34    34    34    34    34    35    35;
17    18    19    20    16    17    18    19    20    16    17;
10    10    10    10    10    10    10    10    10    10    10 ];

A=[1 2 3]';

C= bsxfun(@plus, D, A)

C =

    34    34    34    34    35    35    35    35    35    36    36
    19    20    21    22    18    19    20    21    22    18    19
    13    13    13    13    13    13    13    13    13    13    13