Delete rows from a matrix using for loop

5 vues (au cours des 30 derniers jours)
Juan Pérez Álvarez
Juan Pérez Álvarez le 22 Fév 2022
Commenté : Dominique le 6 Nov 2023
Hello, I need delete the zero rows from a matrix using for loops/while, I try this:
Matrix = [1,1 ; 1,2 ; 0,0 ; 0,0 ; 3,1 ; 0,0];
LM =length(Matrix);
cont = 0;
for i = 1 : LM
if Matrix(i) == 0
cont = cont + 1;
end
end
Matrix_Aux = [];
for j = 1:LM
if Matrix(j) ~= 0
Matrix_Aux = [Matrix(j)];
end
end
I need get this:
Matrix_Aux = [1,1 ; 1,2 ; 3,1 ];
Any idea?

Réponse acceptée

David Hill
David Hill le 22 Fév 2022
Forcing to use for-loop
Matrix = [1,1 ; 1,2 ; 0,0 ; 0,0 ; 3,1 ; 0,0];
idx=[];
for k=1:size(Matrix,1)
if all(Matrix(k,:)==0)
idx=[idx,k];
end
end
Matrix(idx,:)=[];
  1 commentaire
Dominique
Dominique le 6 Nov 2023
Thanks. Good solution.

Connectez-vous pour commenter.

Plus de réponses (1)

Voss
Voss le 22 Fév 2022
Modifié(e) : Voss le 22 Fév 2022
No loops are necessary:
Matrix = [1 1; 1 2; 0 0; 0 0; 3 1; 0 0]
Matrix = 6×2
1 1 1 2 0 0 0 0 3 1 0 0
Matrix(all(Matrix == 0,2),:) = []
Matrix = 3×2
1 1 1 2 3 1

Catégories

En savoir plus sur Matrix Computations dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by