How to delete rows with values 0 from matrix

2 次查看(过去 30 天)
Hello,
I have matrix A which looks like
A = [0 0 0; 0 0 0; 5 1 0; 0 0 0; 1 0 3; 5 9 5; 0 0 0]
I am trying delete all rows in which all values are 0 from matrix A to get:
A = [5 1 0; 1 0 3; 5 9 5]
I used this.
for i = 1:length(A(:,1))
while A(i,1) == 0 && A(i,2) == 0 && A(i,3) == 0
A(i,:) = [];
end
end
At the end it gives me matrix A but also it gives me a error:
'Index in position 1 exceeds array bounds. Index must not exceed 4.' but do not know why...
  2 个评论
VBBV
VBBV 2023-5-1
A = [0 0 0; 0 0 0; 5 1 0; 0 0 0; 1 0 3; 5 9 5; 0 0 0]
A = 7×3
0 0 0 0 0 0 5 1 0 0 0 0 1 0 3 5 9 5 0 0 0
i = 1;
while i <= length(A)
if isequal(A(i,1),0) & isequal(A(i,2), 0) & isequal(A(i,3), 0)
A(i,:) = [];
% tricky part lies in next line
i = i-1;
end
i = i+1 ;
end
A
A = 3×3
5 1 0 1 0 3 5 9 5

请先登录,再进行评论。

回答(1 个)

KSSV
KSSV 2023-5-1
A = [0 0 0; 0 0 0; 5 1 0; 0 0 0; 1 0 3; 5 9 5; 0 0 0]
A = 7×3
0 0 0 0 0 0 5 1 0 0 0 0 1 0 3 5 9 5 0 0 0
A(~any(A,2),:) = []
A = 3×3
5 1 0 1 0 3 5 9 5

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by