Delete rows from a matrix using for loop

5 visualizzazioni (ultimi 30 giorni)
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?

Risposta accettata

David Hill
David Hill il 22 Feb 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,:)=[];

Più risposte (1)

Voss
Voss il 22 Feb 2022
Modificato: Voss il 22 Feb 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

Categorie

Scopri di più su Matrix Computations in Help Center e File Exchange

Prodotti


Release

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by