Fast creation of vector [0 0 1 1 2 2 3 3... n n]

7 views (last 30 days)
Hi all,
like mentioned in the title, is there a fast way of creating a vector with repeating digits?
Thanks!
Simon

Accepted Answer

per isakson
per isakson on 30 Jun 2014
Edited: per isakson on 30 Jun 2014
Test
>> reshape( cat( 1, [0:n], [0:n] ), 1, [] )
ans =
0 0 1 1 2 2 3 3 4 4 5 5
and
>> reshape( repmat( [0:n], 2,1 ), 1, [] )

More Answers (4)

Andrei Bobrov
Andrei Bobrov on 1 Jul 2014
k = [1;1]*(0:n);
out = k(:)';

Jos (10584)
Jos (10584) on 30 Jun 2014
n = 10 % max value
k = 3 % number of repetitions
V = floor((0:k*(n+1)-1)/k)
  3 Comments
Jos (10584)
Jos (10584) on 1 Jul 2014
Reshaping does not take a lot of time. Is it also faster for larger values of k?
per isakson
per isakson on 1 Jul 2014
Edited: per isakson on 3 Jul 2014
Is this solution immune to floating point errors?

Sign in to comment.


Steven Lord
Steven Lord on 8 Dec 2022
n = 5;
x1 = repelem(0:n, 2)
x1 = 1×12
0 0 1 1 2 2 3 3 4 4 5 5
  1 Comment
Paul Safier
Paul Safier on 8 Dec 2022
Oh wow, very nice. I'd never heard of the repelem function. Thanks.

Sign in to comment.


Danilo NASCIMENTO
Danilo NASCIMENTO on 30 Jun 2014
V=zeros(1,20);
k=0;
i=1;
while i<20
V(i)=k;
V(i+1)=k;
k=k+1;
i=i+2;
end
V

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!