index of an array multiple same element
조회 수: 3 (최근 30일)
이전 댓글 표시
How can find the index of an array element if it have element have the same value for example a=[7 8 8 2 5 6 6 2 6 8] what is the index of third 8 and 6. I used find(A==8,1, firs) this gave the first one only, and how can I know the element have more than one value.
댓글 수: 2
답변 (3개)
Stephen23
2019년 2월 26일
>> a = [7,8,8,2,5,6,6,2,6,8];
>> U = unique(a) % the order is the same as C.
U =
2 5 6 7 8
>> [R,C] = find(U(:)==a);
>> C = accumarray(R,C,[],@(v){v});
>> C{:} % same order as U.
ans =
4
8
ans =
5
ans =
6
7
9
ans =
1
ans =
2
3
10
댓글 수: 0
Andrei Bobrov
2019년 2월 25일
편집: Andrei Bobrov
2019년 2월 26일
[a1,~,ii] = unique(a,'stable');
out = [num2cell(a1(:)),accumarray(ii,(1:numel(ii))',[],@(x){sort(x)})];
댓글 수: 2
Andrei Bobrov
2019년 2월 26일
I'm fixed my typo in answer:
[a1,~,ii] = unique(a,'stable');
out = [num2cell(a1(:)),accumarray(ii,(1:numel(ii))',[],@(x){sort(x)})];
madhan ravi
2019년 2월 25일
편집: madhan ravi
2019년 2월 25일
u=unique(a);
C=arrayfun(@(x) find(a==u(x)),1:numel(u),'un',0);
%celldisp(C)
댓글 수: 1
madhan ravi
2019년 2월 25일
If you want the order to be preserved then use 'stable' as an option in unique.
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!