Removing zeros from start of an array and inserting them at the end of same array
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Shahab Khan
le 13 Mar 2019
Commenté : Shahab Khan
le 13 Mar 2019
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
0 commentaires
Réponse acceptée
Alex Mcaulley
le 13 Mar 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 commentaires
Alex Mcaulley
le 13 Mar 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);
Plus de réponses (2)
Sheng Chen
le 13 Mar 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
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!