Delete rows only if there are at least a repeated zero value in the previous or next row of the same column
1 view (last 30 days)
Show older comments
Miguel L
on 25 Sep 2016
Commented: Andrei Bobrov
on 25 Sep 2016
I need your help fellows. I want to remove all rows which contain at least a repeated zero value in the previous/next row of the second column. Look at the next example:
Input=
124.2 8.6 7.2 -4.8
131.1 1.8 1.4 -1.2
131.9 0.0 0.0 0.0
123.0 0.0 0.0 0.0
2323.0 3.0 3.0 3.0
2323.0 0.0 0.0 0.0
221.0 3.1 4.0 5.6
57.0 1.0 231.0 122.0
987.0 0.0 0.0 0.0
4454.0 0.0 0.0 0.0
3.0 0.0 0.0 0.0
434.0 0.0 0.0 0.0
Output=
124.2 8.6 7.2 -4.8
131.1 1.8 1.4 -1.2
2323.0 3.0 3.0 3.0
2323.0 0.0 0.0 0.0
221.0 3.1 4.0 5.6
57.0 1.0 231.0 122.0
Only it was maintened the sixth row of the original table (input) due to there was not a zero in the previous/next row of the same column (second column).
Thanks in advance for your help!
3 Comments
Walter Roberson
on 25 Sep 2016
Your line
131.1 1.8 1.4 -1.2
is followed by a line that has 0 in its second column, so according to your rules it should be removed.
Perhaps you want the rule to be that if there is a set of rows in which there are at least two rows in a row with 0 in the second column, that the entire block with zeros there should be removed ?
Accepted Answer
Walter Roberson
on 25 Sep 2016
Assuming that the rule is that if there is a set of rows in which there are at least two rows in a row with 0 in the second column, that the entire block with zeros there should be removed, then:
mask1 = input(:,2) ~= 0;
mask2 = mask1(1:end-1) | mask1(2:end);
keep_row = [true;mask2] & [mask2;true];
output = input(keep_row, :);
More Answers (0)
See Also
Categories
Find more on Simscape Electrical in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!