exstract consecutive duplicate element of array

1 visualización (últimos 30 días)
ADC
ADC el 25 de Oct. de 2018
Editada: Guillaume el 25 de Oct. de 2018
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 comentarios
jonas
jonas el 25 de Oct. de 2018
Editada: jonas el 25 de Oct. de 2018
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
ADC
ADC el 25 de Oct. de 2018
yess

Iniciar sesión para comentar.

Respuestas (2)

Stephen23
Stephen23 el 25 de Oct. de 2018
>> 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 el 25 de Oct. de 2018
Editada: jonas el 25 de Oct. de 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 comentarios
ADC
ADC el 25 de Oct. de 2018
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
jonas
jonas el 25 de Oct. de 2018
Editada: jonas el 25 de Oct. de 2018
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

Iniciar sesión para comentar.

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by