Find repeated values in a matrix

How can I find repeated values at the same time in two columns of an array (12x2):
A = [26 24
28 35
31 34
33 31
33 31
33 28
35 25
31 26
30 26
28 29
27 30
26 32];
In A the [33 31] is repeated. I tried to use the unique function but it only finds the unique values in a column.
[C, ia, ic] = unique(A(:,1), 'rows');
Thanks in advance.

Antworten (1)

Walter Roberson
Walter Roberson am 9 Dez. 2020

0 Stimmen

A = [26 24
28 35
31 34
33 31
33 31
33 28
35 25
31 26
30 26
28 29
27 30
26 32];
[C, ~, G] = unique(A, 'rows');
counts = accumarray(G, 1);
mask = counts > 1;
[counts(mask), C(mask,:)]
ans = 1×3
2 33 31

2 Kommentare

Yro
Yro am 9 Dez. 2020
Thanks a lot, it works. One more question, if I want to know if some value is repeated or not?
[wasfound, idx] = ismember(ThingToFind, A, 'rows');
repcounts = zeros(size(wasfound));
repcounts(wasfound) = counts(idx(wasfound));
[repcounts, ThingToFind]
Here, ThingToFind may be a 2D array with the same number of columns as A has, and the associated count will be calculated for each entry.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Operators and Elementary Operations finden Sie in Hilfe-Center und File Exchange

Gefragt:

Yro
am 9 Dez. 2020

Kommentiert:

am 9 Dez. 2020

Community Treasure Hunt

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

Start Hunting!

Translated by