exstract consecutive duplicate element of array

Dear Dear I've got the folowing problem Given an A matrix nxm i need to exstract consecutive duplicate elements of array
so I mean if for excample the row n=n+1 =n+2 I want to get a matrix B obtainet from A less the rows duplicate

4 Comments

Example of your output?
For exsamples the second coloumn the secon line have the value 2 duplicate
so the functions i need is to get te matrix B as following
A =
1 2 3
1 2 7
3 4 9
K>> B=[1 2 3;3 4 9]
B =
1 2 3
3 4 9
I think you missed some ;'s there? Should it be
A = [1 2 3; 1 2 7; 3 4 9]
and the output
B = [1 2 3; 3 4 9]
?? I'm just guessing here

Sign in to comment.

Answers (2)

>> A = [1,2,3;1,2,7;3,4,9;9,9,9;7,7,7]
A =
1 2 3
1 2 7
3 4 9
9 9 9
7 7 7
>> B = A([true;all(diff(A,1,1)~=0,2)],:)
B =
1 2 3
3 4 9
7 7 7
jonas
jonas on 25 Oct 2018
Edited: jonas on 25 Oct 2018
A is your matrix. This line removes duplicates:
A([false diff(A)==0]) = [];
Or you could expand it to this, given your vague example from the comments
A =
1 2 3
1 2 7
3 4 9
_
mask = [ones(1,size(A,1));diff(A,1)] == 0;
A = A(sum(mask,2)==0,:)
A =
1 2 3
3 4 9

2 Comments

this is exsactly what I need but I whant that this check is done only for example a given coulumn, for example the coloumn 3
Simple enough, just change this line
mask = [false;diff(A(:,3))==0]
or simply write it like this
mask = [false;diff(A(:,3))==0]
A = A(~mask,:)
The number, in this case 3, determines the column over which the check is made

Sign in to comment.

Asked:

ADC
on 25 Oct 2018

Edited:

on 25 Oct 2018

Community Treasure Hunt

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

Start Hunting!