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)

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!