Delete rows from a matrix using for loop

39 Ansichten (letzte 30 Tage)
Juan Pérez Álvarez
Juan Pérez Álvarez am 22 Feb. 2022
Kommentiert: Dominique am 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?

Akzeptierte Antwort

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

Weitere Antworten (1)

Voss
Voss am 22 Feb. 2022
Bearbeitet: Voss am 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

Produkte


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by