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 个评论
Arkanra Kadhum
Arkanra Kadhum 2019-2-25
the index of 7 is 1
first 8 is 2, second 8 is 3, third 8 is 10
first 6 is 6, second 6 is 7, third 8 is 9
i

请先登录,再进行评论。

回答(3 个)

Stephen23
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

Andrei Bobrov
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 个评论
Arkanra Kadhum
Arkanra Kadhum 2019-2-25
Hi Andrei
I try this code
a1=7; a2=8; a3=8; a4=2; a5=5 ;a6=6; a7=6; a8=2;a9=6; a10=8;
A=[ a1, a2, a3, a5, a4, a6,a7,a8,a9,a10];
[a1,~,ii] = unique(A,'stable');
out = [num2cell,a1(:)accumarray(ii,(1:numel(ii))',[],@(x){x})];
[a2,~,ii] = unique(A,'stable');
out = [num2cell,a2(:)accumarray(ii,(1:numel(ii))',[],@(x){x})];
I gate this error
out = [num2cell,a1(:)accumarray(ii,(1:numel(ii))',[],@(x){x})];
Error: Unexpected MATLAB expression.
Andrei Bobrov
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
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
madhan ravi 2019-2-25
If you want the order to be preserved then use 'stable' as an option in unique.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by