Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Matlab: add vector to matrix

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

like image 595
olamundo Avatar asked Sep 22 '11 14:09

olamundo


2 Answers

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
like image 119
Nasser Avatar answered Sep 22 '22 01:09

Nasser


Use repmat:

M = randn(3, N);           % your 3 x N matrix
v = randn(3, 1);           % your vector
r = M + repmat(v, [1 N]);  % add v to every column of M
like image 37
dantswain Avatar answered Sep 18 '22 01:09

dantswain