exstract consecutive duplicate element of array

17 ビュー (過去 30 日間)
ADC
ADC 2018 年 10 月 25 日
編集済み: Guillaume 2018 年 10 月 25 日
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 件のコメント
ADC
ADC 2018 年 10 月 25 日
yess

サインインしてコメントする。

回答 (2 件)

Stephen23
Stephen23 2018 年 10 月 25 日
>> 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
  1 件のコメント
Andrei Bobrov
Andrei Bobrov 2018 年 10 月 25 日
+1

サインインしてコメントする。


jonas
jonas 2018 年 10 月 25 日
編集済み: jonas 2018 年 10 月 25 日
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 件のコメント
jonas
jonas 2018 年 10 月 25 日
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

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by