Replicate values in a matrix i-1 times

1 visualización (últimos 30 días)
Nicole McEwan
Nicole McEwan el 3 de Mzo. de 2020
Comentada: Fabio Freschi el 3 de Mzo. de 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.

Respuestas (2)

David Hill
David Hill el 3 de Mzo. de 2020
B=repelem(A,[1,1:5]);

Fabio Freschi
Fabio Freschi el 3 de Mzo. de 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

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by