Building a matrix by merging the same row vector multiple times
Is there a matlab function which allows me to do the following operation?
x = [1 2 2 3];
and then based on x
I want to build the ma开发者_C百科trix m = [1 2 2 3; 1 2 2 3; 1 2 2 3; 1 2 2 3]
You are looking for the REPMAT function:
x = [1 2 2 3];
m = repmat(x,4,1);
You can also use indexing to repeat the rows:
m = x(ones(4,1),:);
or even outer-product:
m = ones(4,1)*x;
and also using BSXFUN:
m = bsxfun(@times, x, ones(4,1))
You could try using vertcat
, like this:
x = [1 2 2 3];
m = vertcat(x,x,x,x);
Or even simply:
x = [1 2 2 3];
m = [x;x;x;x];
EDIT:
for multiples of x, you can do:
x = [1 2 2 3];
m = [x;2*x;3*x]; % [1 2 2 3; 2 4 4 6; 3 6 6 9]
EDIT2:
For an arbitrary number of x's in m...
n = 3; % number of repetitions...
x = [1 2 2 3];
m = [];
for i=1:n
m = [m;x];
end
精彩评论