Matlab: add vector to matrix

I have a 3XN matrix representing a list of three-dimensional 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] , which adds a three-dimensional vector to each column of the matrix.

I know how to do this with a for loop, but how can I do this without a loop? Of course there is a way ...

+6
source share
2 answers

do you mean 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 
+10
source

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 
+1
source

Source: https://habr.com/ru/post/897829/


All Articles