Repeat matrix element of a given matrix

1 view (last 30 days)
my matrix is x=[2 5 3 6 1]
I want it to make it as y=[2 2 2 2 5 5 5 5 3 3 3 3 6 6 6 6 1 1 1 1]
which function does it?
  1 Comment
Jan
Jan on 11 Mar 2015
This topic is discussed such frequently, that I miss it in the FAQ.

Sign in to comment.

Accepted Answer

Jan
Jan on 11 Mar 2015
Edited: Jan on 11 Mar 2015
x = [2 5 3 6 1];
y = reshape(repmat(x, 4, 1), 1, []);
Or:
y = kron(x, ones(1, 4));
  3 Comments
Nikhil Chourasia
Nikhil Chourasia on 13 Mar 2015
Hi Jan Simon can you help me to regain x from y. I have used kron in my coding.
Guillaume
Guillaume on 13 Mar 2015
That would be
x = y(1:4:end);
This is basic matrix indexing.
In the future, start a new question rather than asking in comments.

Sign in to comment.

More Answers (3)

Stephen23
Stephen23 on 11 Mar 2015
Edited: Stephen23 on 11 Mar 2015
Another quick one-liner:
reshape(ones(4,1)*x,1,[])
  2 Comments
Nikhil Chourasia
Nikhil Chourasia on 13 Mar 2015
Hi Stephen Cobeldick can you help me to regain original matrix

Sign in to comment.


Guillaume
Guillaume on 11 Mar 2015
New in 2015a, repelem:
repelem(x, 4)

Andrei Bobrov
Andrei Bobrov on 11 Mar 2015
x = [2 5 3 6 1];
y = x(ceil((1:4*numel(x))/4));

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!