How to delete row from matrix, which has values 0 and 4?

1 view (last 30 days)
I have a matrix:
u =
0 0 4
0 3 0
0 3 4
2 0 0
2 0 4
2 3 0
2 3 4
I need to delete a row which has value 4 and other values equal to 0.
So, my result should delete the first row, where [0 0 4]. How Can I do?
I did this code below, but it doesn't work.
d=length(u);
if u(1:d,:)==0 & u(1:d,:)==4
u(1:d,:) = []
end
Could anyone help me?

Accepted Answer

Stephen23
Stephen23 on 21 Jul 2016
Edited: Stephen23 on 21 Jul 2016
u = [...
0 0 4
0 3 0
0 3 4
2 0 0
2 0 4
2 3 0
2 3 4]
idx = all(u==0 | u==4, 2)
out = u(~idx,:)
  1 Comment
Stephen23
Stephen23 on 21 Jul 2016
Edited: Stephen23 on 21 Jul 2016
Addendum: if you need to check that in any row exactly one element has the value four, and all remaining elements have the value zero, then this will work:
idx = size(u,2)-1==sum(u==0,2) & 1==sum(u==4,2)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!