Shrink a 1-D array (vector) by removing all the columns with a value of zero

8 views (last 30 days)
SimpleArray = [1,0,2,0,3,0,4,0,5,0]
Desired result
NewSimpleArray = [1,2,3,4,5]

Accepted Answer

Jacob Halbrooks
Jacob Halbrooks on 20 Mar 2012
Here is a good solution:
NewSimpleArray = SimpleArray(SimpleArray ~= 0)
  4 Comments

Sign in to comment.

More Answers (4)

Dr. Seis
Dr. Seis on 20 Mar 2012
SimpleArray(SimpleArray==0) = [];

David
David on 20 Mar 2012
Thanks for the answers and for showing me the previous discussion string (I didn't think this was the first time this question was asked)

seif seif
seif seif on 21 Jan 2018
Edited: seif seif on 21 Jan 2018
Using nonzeros is also very simple (note that the output is a column vector):
NewSimpleArray = nonzeros(SimpleArray)
NewSimpleArray =
1
2
3
4
5
  2 Comments
Image Analyst
Image Analyst on 31 Aug 2018
That changes the shape from a row vector to a column vector. However it can be fixed with the code below:
SimpleArray = [1,0,2,0,3,0,4,0,5,0] % Row Vector
NewSimpleArray = nonzeros(SimpleArray) % Creates column vector.
% Reshape back into a row vector.
NewSimpleArray = reshape(NewSimpleArray, 1, [])
saber kazemi
saber kazemi on 12 Dec 2018
How about matrix?
What if the output is still a matrix after removing zero elements?

Sign in to comment.


Salam Ismaeel
Salam Ismaeel on 31 Aug 2018
Simply by:
X(X==0)=[]

Categories

Find more on Multidimensional Arrays in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!