Ho to repeat a vector?

6 views (last 30 days)
M G
M G on 24 Nov 2012
Hi all,
Could anybody plz be a help me what is the build-in function for:
repvec (1:5, 2)
which results in:
ans = 1 1 2 2 3 3 4 4 5 5
Thank you so much for your help :)
  1 Comment
Jordan Lessentier
Jordan Lessentier on 2 May 2017
https://fr.mathworks.com/help/matlab/ref/repelem.html

Sign in to comment.

Answers (4)

Matt Fig
Matt Fig on 24 Nov 2012
Edited: Matt Fig on 24 Nov 2012
vec = 1:5;
reshape(vec([1 1],:),1,[])
% Or reshape(vec(ones(1,N),:),1,[]) to expand N times
For more complex expansions, give this file a try: EXPAND

Image Analyst
Image Analyst on 24 Nov 2012
If you have the Image Processing Toolbox, you can do it this way
out = imresize(a, [1 10], 'nearest')
where a is your 1:5 vector, and the 10 is how long you want the output to be.
  1 Comment
Jan
Jan on 25 Nov 2012
+1: While this is not very efficient, it is a creative recycling of the Signal Processing toolbox.

Sign in to comment.


Azzi Abdelmalek
Azzi Abdelmalek on 24 Nov 2012
Edited: Azzi Abdelmalek on 24 Nov 2012
vec=1:5
out=[vec;vec];
out=out(:)'
If you want to repeat n times
vec=1:5
n=10;
out=repmat(vec,n,1);
out=out(:)';

Jan
Jan on 25 Nov 2012
While I'd prefer Matt Fig's approach in real programs, here another approach, which might be interesting:
vec = 1:5;
n = 2;
index = zeros(1, length(vec) * n);
index(1:n:end) = 1;
index = cumsum(index);
result = vec(index);

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!