Removing zeros from start of an array and inserting them at the end of same array

1 visualización (últimos 30 días)
Let say I have an array
A = [ 0 0 0 0 1 2 3 4 5 6 7 8 9 0 0 0 0 ]
I would like to know wheter is there any way to move starting four zeros to the end of same array A.
The result should be
Result = [ 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 ]
Now, in this example there were only four zeros. I do have arrays which have more than 4 zeros.
Thanks

Respuesta aceptada

Alex Mcaulley
Alex Mcaulley el 13 de Mzo. de 2019
Try this:
A = [0 0 0 0 1 2 3 4 5 6 7 8 9 0 0 0 0];
idx = find(A>0,1);
B = [A(idx:end),zeros(1,idx-1)]
  3 comentarios
Alex Mcaulley
Alex Mcaulley el 13 de Mzo. de 2019
A = [0 0 0 0 1 2 3 4 5 6 7 8 9 0 0 0 0];
idx = find(A>0,1);
B = [A(idx:end),zeros(1,idx-1)];
B(~B) = max(B);
Shahab Khan
Shahab Khan el 13 de Mzo. de 2019
Thank you, actually i figured that out myself so i deleted the question. But anyway Thanks alot.

Iniciar sesión para comentar.

Más respuestas (2)

Matt J
Matt J el 13 de Mzo. de 2019
Editada: Matt J el 13 de Mzo. de 2019
n=find(A,1);
Result=circshift(A,1-n);

Sheng Chen
Sheng Chen el 13 de Mzo. de 2019
Try this
A = [ 0,1,0,3,12];
idx = 1;
for j = 1 : numel(A)
if A(j) ~= 0
% swap A(j) and A(idx)
A([j idx]) = A([idx j]);
idx = idx + 1;
end
end

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Productos


Versión

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by