Есть ли функция Matlab, которая позволяет мне выполнять следующую операцию?
x = [1 2 2 3];
а потом на основе x
хочу построить матрицу m = [1 2 2 3; 1 2 2 3; 1 2 2 3; 1 2 2 3]
Есть ли функция Matlab, которая позволяет мне выполнять следующую операцию?
x = [1 2 2 3];
а потом на основе x
хочу построить матрицу m = [1 2 2 3; 1 2 2 3; 1 2 2 3; 1 2 2 3]
Вы ищете функцию 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))
m = [1 2 2 3; 2 4 4 6; 3 6 6 9]
?
- person Simon; 31.07.2011
m = bsxfun(@times, x, (1:3)')
- person Amro; 31.07.2011
Вы можете попробовать использовать vertcat
, например:
x = [1 2 2 3];
m = vertcat(x,x,x,x);
Или даже просто:
x = [1 2 2 3];
m = [x;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]
РЕДАКТИРОВАТЬ2:
Для произвольного числа x в m...
n = 3; % number of repetitions...
x = [1 2 2 3];
m = [];
for i=1:n
m = [m;x];
end