Matlab: добавить вектор в матрицу - PullRequest
6 голосов
/ 22 сентября 2011

У меня есть матрица 3XN, представляющая список трехмерных координат, что-то вроде

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 

Я хочу сместить все координаты на некоторый вектор v=[1 2 3], то есть добавить трехмерный вектор в каждый столбецматрицы.

Я знаю, как сделать это с помощью цикла for, но как я могу сделать это без цикла?Конечно, есть способ ...

Ответы [ 2 ]

10 голосов
/ 22 сентября 2011

Вы имеете в виду, как это?

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
1 голос
/ 22 сентября 2011

Использование 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
...