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

6 vues (au cours des 30 derniers jours)
SimpleArray = [1,0,2,0,3,0,4,0,5,0]
Desired result
NewSimpleArray = [1,2,3,4,5]

Réponse acceptée

Jacob Halbrooks
Jacob Halbrooks le 20 Mar 2012
Here is a good solution:
NewSimpleArray = SimpleArray(SimpleArray ~= 0)
  4 commentaires
Kaveh Allahdin
Kaveh Allahdin le 14 Nov 2018
How would you do this in simulink?

Connectez-vous pour commenter.

Plus de réponses (4)

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

David
David le 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 le 21 Jan 2018
Modifié(e) : seif seif le 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 commentaires
Image Analyst
Image Analyst le 31 Août 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 le 12 Déc 2018
How about matrix?
What if the output is still a matrix after removing zero elements?

Connectez-vous pour commenter.


Salam Ismaeel
Salam Ismaeel le 31 Août 2018
Simply by:
X(X==0)=[]

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by