Clear Filters
Clear Filters

Delete rows for specific elements from a matrix

1 view (last 30 days)
Hi
I'm trying to delete all rows if the second and third element is equal to zero. My if-else sentence doesn't work. Could you help me?
f = [2 5 4 3 2; 4 9 2 1 9; 2 0 0 0 0; 4 0 0 0 3; 9 7 12 14 42];
for i = 1:length(f)
if (f(i,2) == 0) && (f(i,3) == 0)
f(i,:) = [];
end
end
A = f; % Want the final result of A to look like this: A = [2 5 4 3 2; 4 9 2 1 9; 9 7 12 14 42]
  1 Comment
Azzi Abdelmalek
Azzi Abdelmalek on 20 Sep 2013
The problem is with for i = 1:length(f), because f(i,:) = [] will decrease the length of f

Sign in to comment.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 20 Sep 2013
Edited: Azzi Abdelmalek on 20 Sep 2013
f = [2 5 4 3 2; 4 9 2 1 9; 2 0 0 0 0; 4 0 0 0 3; 9 7 12 14 42];
f(all(~f(:,2:3),2),:)=[]
%or
f=f(any(f(:,2:3),2),:)

More Answers (0)

Community Treasure Hunt

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

Start Hunting!