Delete rows from a matrix using for loop

조회 수: 5 (최근 30일)
Juan Pérez Álvarez
Juan Pérez Álvarez 2022년 2월 22일
댓글: Dominique 2023년 11월 6일
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?

채택된 답변

David Hill
David Hill 2022년 2월 22일
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개)

Voss
Voss 2022년 2월 22일
편집: Voss 2022년 2월 22일
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

카테고리

Help CenterFile Exchange에서 Matrix Computations에 대해 자세히 알아보기

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by