index of an array multiple same element
2 ビュー (過去 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!