MATLAB Answers

How to remove zeros from an array?

3,581 views (last 30 days)
Elvis Somers
Elvis Somers on 20 Mar 2017
Commented: Daniel Boateng on 26 Feb 2021
I want to remove zeroes from an array. The array has exactly one zero per row. For example:
a = [1 4 0 3; 0 1 5 5; 1 0 8 1; 5 4 4 0; 0 1 5 2]
Should be turned into
a = [1 4 3; 1 5 5; 1 8 1; 5 4 4; 1 5 2]
I have tried using the command
a(a==0) = [];
However, this turns the 2000x50 array into an 1x98000 array instead of an 2000x49 array like I want it. Any ideas?

Accepted Answer

Beder
Beder on 20 Mar 2017
Edited: MathWorks Support Team on 28 Nov 2018
To remove a single zero from each row of a matrix and rebuild the new matrix of nonzero entries, try the following code:
a = [1 4 0 3; 0 1 5 5; 1 0 8 1; 5 4 4 0; 0 1 5 2]
v = nonzeros(a');
newmat = reshape(v,3,5)'

More Answers (1)

saber kazemi
saber kazemi on 12 Dec 2018
If we do not know how much of the elements to submit after we remove the zero elements.
a = [is a big matrix]
v = nonzeros(a');
newmat = reshape(v,?,?)'
Any ideas?
  3 Comments
Daniel Boateng
Daniel Boateng on 26 Feb 2021
It helped me. Thanks Farshad.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!