MATLAB Answers

Selecting numbers in matrix that are repeated

2 views (last 30 days)
Charms
Charms on 1 Dec 2019
Commented: Star Strider on 1 Dec 2019
I have a 60x5 matrix A and would like to find the answer vector that lists all the numbers in A that appeared at least 2 times/remove those numbers that only appeared once. How may I write for this?
(A contains some NaNs too)
Thank you! :)

  0 Comments

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 1 Dec 2019
Try this:
A = randi(1000, 60, 5); % Create Matrix
[Au,~,ix] = unique(A,'stable'); % Unique elements in ‘A’
tally = accumarray(ix,1); % Number Of Occurrences Of Each
keep = tally > 1; % Keep Indices Of Occurrences > 1
out1 = [Au(keep), tally(keep)]; % Display Numbers & Occurrences
Ai = ismember(A,out1(:,1)); % Return Logical Index Of Occurrences > 1
Anew = A .* Ai; % Matrix With ‘Single-Occurrence’ Elements Eliminated
The ‘Anew’ matrix has 0 values for the elements that are not repeated, those that are repeated appear in their expected locations.
If you only want the values of the numbers that aare repeated, and the number of repeats, those are contained in the ‘out1’ matrix.

More Answers (1)

KALYAN ACHARJYA
KALYAN ACHARJYA on 1 Dec 2019
[N,edges]=histcounts(A,unique(A))
result_array=edges(N>1)

  1 Comment

Charms
Charms on 1 Dec 2019
there seems to be an error using histcounts (needs to be monotonically increasingly) - had a similar code with you too :) thank you nonetheless kalyan!

Sign in to comment.