Replicate values in a matrix i-1 times

1 view (last 30 days)
Nicole McEwan
Nicole McEwan on 3 Mar 2020
Commented: Fabio Freschi on 3 Mar 2020
I want to create a new array that duplicates the first value of A, then the rest of the values (i-1) times. For example,
A=[1; 4; 8; 3; 2; 6]
I want
B=[1; 4; 8; 8; 3; 3; 3; 2; 2; 2; 2; 6; 6; 6; 6; 6]
My first attempt was a for loop but I couldn't make it work. My other idea is to do C=repmat(A,1,6) and then pull out B=[C(1,1); C(2,1); C(3,1); C(3,2); ..... etc] but I don't know how to automate this, since my actual A has 2000 values.
Any help is appreciated! Thanks.

Answers (2)

David Hill
David Hill on 3 Mar 2020
B=repelem(A,[1,1:5]);

Fabio Freschi
Fabio Freschi on 3 Mar 2020
Quick and dirty for loop
A=[1; 4; 8; 3; 2; 6]
B = [];
for i = 1:length(A)
B = [B; repmat(A(i),i,1)];
end
You can also play a bit to allocate correctly B outside the loop. It's a nice exercise

Community Treasure Hunt

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

Start Hunting!