Delete Lines if there are three e qual lines
Info
This question is closed. Reopen it to edit or answer.
Show older comments
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 Comments
madhan ravi
on 29 Oct 2018
give an example
Giuseppe Antonacci
on 29 Oct 2018
madhan ravi
on 29 Oct 2018
What’s your desired output give an example
Giuseppe Antonacci
on 29 Oct 2018
KSSV
on 29 Oct 2018
It is not clear.....you need to explain more...
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
on 29 Oct 2018
Answers (1)
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 Comment
madhan ravi
on 29 Oct 2018
Cool @ Stephen was struggling to figure it out thanks
This question is closed.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!