Effacer les filtres
Effacer les filtres

Remove zeros from a vector from a specific position

2 vues (au cours des 30 derniers jours)
Jorge Luis Paredes Estacio
Jorge Luis Paredes Estacio le 18 Août 2023
Commenté : the cyclist le 18 Août 2023
Hello, I have the following vector as example:
X=[0, 0; 0.02, 2.3;0.04, 0.4; 0, 0; 0.06, 2.5; 0.08, 3.6; 0, 0; 0.10, 2.5]
I want to remove the zeros and I only want to keep the zeros at the beginning and obtain the following matrix:
X=[0, 0; 0.02, 2.3;0.04, 0.4; 0.06, 2.5; 0.08, 3.6; 0.10, 2.5]
I know this option
X( all(~X,2), : ) = [];
which eliminates all the zeros and then I can add the zeros again at the beggining using
X=vertcat([0 0],X);
but there must be a direct way to do it. I would appreciate the help.
  2 commentaires
the cyclist
the cyclist le 18 Août 2023
Will there always be at least one row of zeros at the beginning?
If so, will there always be exactly one row of zeros at the beginning?
Jorge Luis Paredes Estacio
Jorge Luis Paredes Estacio le 18 Août 2023
Yes, there will be always zeros at the beginning.

Connectez-vous pour commenter.

Réponse acceptée

Bruno Luong
Bruno Luong le 18 Août 2023
remove = all(~X,2);
remove(1) = false;
X(remove,:) = [];
  6 commentaires
Jorge Luis Paredes Estacio
Jorge Luis Paredes Estacio le 18 Août 2023
THANK YOU VERY MUCH. :).
the cyclist
the cyclist le 18 Août 2023
FYI, this solution will not work if there are multiple rows of leading zeros to keep. (That's why I asked if there was always exactly one row of leading zeros.) For example,
X = [0, 0;
0, 0;
2, 3;
5, 7;
0, 0];
X([false;all(~X(2:end,:),2)],:)=[]
X = 3×2
0 0 2 3 5 7

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Language Fundamentals dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by