How to remove zeros from an array without using nonzeros command
1 view (last 30 days)
Show older comments
i want to delete the zeros without using nonzeros
x=[1 2 2 0 3 1 3 0 0];
i=1;
j=1;
while i <= length(x)
if x(i)==0
x(i) =[] ;
else
x(i)=x(i);
end
while j <= length(x)
if x(j)==0
x(j) =[] ;
else
x(j)=x(j);
end
j=j+1;
i=i+1;
end
end
x
2 Comments
Rik
on 2 Sep 2019
The code you show is not formatted correctly and it doesn't show an array, x is only a scalar. Are you sure this is what you mean?
Accepted Answer
Rik
on 2 Sep 2019
If you insist on a loop: loop backwards through your array to account for removed elements.
x=[1 2 2 0 3 1 3 0 0];
for n=numel(x):-1:1
if x(n)==0,x(n)=[];end
end
But course it is much better to do an array operation:
x(x==0)=[];
More Answers (0)
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!