matlabmatrixrowsrepeattiling

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 matrix m = [1 2 2 3; 1 2 2 3; 1 2 2 3; 1 2 2 3]


Solution

  • 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))