Matlab - построение матрицы путем объединения одного и того же необработанного вектора несколько раз - PullRequest
8 голосов
/ 31 июля 2011

Есть ли функция Matlab, которая позволяет мне выполнять следующую операцию?

x = [1 2 2 3];

, а затем на основе x Я хочу построить матрицу m = [1 2 2 3; 1 2 2 3; 1 2 2 3; 1 2 2 3]

Ответы [ 2 ]

12 голосов
/ 31 июля 2011

Вы ищете функцию REPMAT :

x = [1 2 2 3];
m = repmat(x,4,1);

Вы также можете использовать индексирование для повторения строк:

m = x(ones(4,1),:);

или даже внешний продукт:

m = ones(4,1)*x;

, а также с использованием BSXFUN:

m = bsxfun(@times, x, ones(4,1))
0 голосов
/ 31 июля 2011

Вы можете попробовать использовать vertcat, например:

x = [1 2 2 3];
m = vertcat(x,x,x,x);

Или даже просто:

x = [1 2 2 3];
m = [x;x;x;x];

РЕДАКТИРОВАТЬ:

для кратных х, выможет сделать:

x = [1 2 2 3];
m = [x;2*x;3*x];  %  [1 2 2 3; 2 4 4 6; 3 6 6 9]

EDIT2:

Для произвольного числа х в м ...

n = 3; % number of repetitions...
x = [1 2 2 3];
m = [];
for i=1:n
    m = [m;x];
end
...