how to find indices of duplicates in array and save results on a structure

1 view (last 30 days)
Hi, I want to know how to find indices of duplicaes in a given array and save results on a structure.
For example, array A is given as below:
A=[1;5;2;5;3;3;4;1;2;1];
so there are duplicates of values: 1,2,3,5 , and I want to find the indices of duplicates directly without using 'find'
I manually wrote down on structure as below, but how can I write the code to save the indices of duplicates on a structure?
So those are my two questions.. 1) how to find indices of duplicates in array , and 2) how to save results on a structure
Many thanks:)

Accepted Answer

Stephen23
Stephen23 on 28 May 2022
A = [1;5;2;5;3;3;4;1;2;1];
[U,~,X] = unique(A);
V = 1:numel(A);
C = accumarray(X,V(:),[],@(v){v});
S = struct('value',num2cell(U),'indices',C)
S = 5×1 struct array with fields:
value indices
Checking:
S.value
ans = 1
ans = 2
ans = 3
ans = 4
ans = 5
S.indices
ans = 3×1
1 8 10
ans = 2×1
3 9
ans = 2×1
5 6
ans = 7
ans = 2×1
2 4

More Answers (0)

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!