Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

Delete Lines if there are three e qual lines

조회 수: 1 (최근 30일)
Giuseppe Antonacci
Giuseppe Antonacci 2018년 10월 29일
마감: MATLAB Answer Bot 2021년 8월 20일
Hi, i have this problem. I have a matrix A(m ; 8). I would have new Matrix B where are delete the Lines Whith this idea: if in matrix A There are three Numbers that are the same in Colomn 3 and 5, in the new Matrix delete this three Lines.
  댓글 수: 7
jonas
jonas 2018년 10월 29일
편집: jonas 2018년 10월 29일
Let me guess
A =
1 3 7 8 9 7 2 8
9 0 3 5 2 1 4 9
0 2 3 6 2 7 7 7
3 2 3 5 2 2 5 7
Delete rows where three or more (consecutive???) columns share the same value? Clarify:
  • consecutive duplicates only?
  • limit the check to columns 3 & 5?
  • exactly three duplicates or more than three?
  • is the matrix always 4 rows?
  • What if only column 3 has consecutive duplicates? Or only column 5?
To summarize: I don't think you have thought this through.
Giuseppe Antonacci
Giuseppe Antonacci 2018년 10월 29일
this matrix in an example. the matrix is (m;8). the first three point in correct.

답변 (1개)

Stephen23
Stephen23 2018년 10월 29일
편집: Stephen23 2018년 10월 29일
This should get you started:
>> A = [1,3,7,8,9,7,2,8;9,0,3,5,2,1,4,9;0,2,3,6,2,7,7,7;3,2,3,5,2,2,5,7]
A =
1 3 7 8 9 7 2 8
9 0 3 5 2 1 4 9
0 2 3 6 2 7 7 7
3 2 3 5 2 2 5 7
>> B = [1,3,7,8,9,7,2,8] % expected output
B =
1 3 7 8 9 7 2 8
>> X = diff(A(:,[3,5]),1,1)==0;
>> Y = X(1:end-1,:) & X(2:end,:);
>> Z = any(conv2(Y,[1;1;1])>0,2); % either column 3 OR 5
>> B = A(~Z,:)
B =
1 3 7 8 9 7 2 8
If you want both columns to fit the condition:
Z = all(conv2(Y,[1;1;1])>0,2)
  댓글 수: 1
madhan ravi
madhan ravi 2018년 10월 29일
Cool @ Stephen was struggling to figure it out thanks

이 질문은 마감되었습니다.

Community Treasure Hunt

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

Start Hunting!

Translated by