Delete rows only if there are at least a repeated zero value in the previous or next row of the same column

조회 수: 1 (최근 30일)
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
Miguel L
Miguel L 2016년 9월 25일
Walter thanks for your comments. Let me clarify the issue: It is necessary remove rows looking for zeros at the previous/next row of the second column. At the end, I am looking for the result enlisted at the output:
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
Walter Roberson
Walter Roberson 2016년 9월 25일
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 ?

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2016년 9월 25일
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, :);

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by