finding an item in an array

Hello,
I have an array of five items for example 1 2 2 2 4
How can I find the positions of the repeated items, i.e 2 2 2?
Thanks

回答 (7 件)

Aldin
Aldin 2012 年 3 月 20 日

1 投票

Here is my solution:
a = [ 1 2 2 2 4 ];
find(a==2)
ans =
2 3 4

2 件のコメント

Daniel Shub
Daniel Shub 2012 年 3 月 20 日
+1 for simplicity. While this requires knowing what number is repeated and will fail if multiple numbers are repeated, it does answer the question.
Aldin
Aldin 2012 年 3 月 20 日
HERE IS THE COMBINATION OF Daniels AND my CODE:
x = [1 2 2 2 4 5 5 3 3 2];
a = unique(x);
[~,b] = unique(x, 'first');
[~,c] = unique(x, 'last');
ismember(x, a(b~=c))
the result will be: 0 1 1 1 0 1 1 1 1 1
(my code) if you want to get index:
find(ans==1)
result:
ans =
2 3 4 6 7 8 9 10
MURTADHA ALDEER
MURTADHA ALDEER 2012 年 3 月 20 日

0 投票

when I use findseq, I get this message
??? Undefined function or method 'findseq' for input arguments of type 'double'.
!

1 件のコメント

Jonathan Sullivan
Jonathan Sullivan 2012 年 3 月 20 日
Make sure you download the function. It is not built into MATLAB.
MURTADHA ALDEER
MURTADHA ALDEER 2012 年 3 月 20 日

0 投票

Oh, thank you
But could you help me and let me know how to download a function?

3 件のコメント

Jonathan Sullivan
Jonathan Sullivan 2012 年 3 月 20 日
There's a button in the top right that says "Download All." Click that one.
MURTADHA ALDEER
MURTADHA ALDEER 2012 年 3 月 22 日
Sorry, Jonathan
I can not find this button
You mean it is in Matlab, or in Matlab website?
Thank you for your valuable efforts
Oleg Komarov
Oleg Komarov 2012 年 3 月 25 日
Diret link to download: http://www.mathworks.com/matlabcentral/fileexchange/28113-findseq?controller=file_infos&download=true
FEX page for findseq: http://www.mathworks.com/matlabcentral/fileexchange/28113-findseq
Daniel Shub
Daniel Shub 2012 年 3 月 20 日

0 投票

One of my uglier solutions ...
x = [1 2 2 2 4];
a = unique(x);
[~,b] = unique(x, 'first');
[~,c] = unique(x, 'last');
ismember(x, a(b~=c))
Aldin
Aldin 2012 年 3 月 21 日

0 投票

HERE IS THE COMBINATION OF Daniels AND my CODE:
x = [1 2 2 2 4 5 5 3 3 2];
a = unique(x);
[~,b] = unique(x, 'first');
[~,c] = unique(x, 'last');
ismember(x, a(b~=c))
the result will be: 0 1 1 1 0 1 1 1 1 1
(my code) if you want to get index:
find(ans==1)
result: ans = 2 3 4 6 7 8 9 10
MURTADHA ALDEER
MURTADHA ALDEER 2012 年 3 月 22 日

0 投票

Thank you all for your answer, I was looking for the most repeated item
I sat with a friend and we found the solution, see below:
previous=[1 2 2 3 4]
for lo = 1: length (previous)
for lon = 1 : length (previous)
H(lo,lon) = any(previous(lo)==previous(lon));
end
end
add = find(sum(H')==max(sum(H')))
add will return the positions of the repeated item (2).
Regards

1 件のコメント

Daniel Shub
Daniel Shub 2012 年 3 月 25 日
If your question is now answered, then accept your answer and upvote anyone that helped.

この質問は閉じられています。

タグ

質問済み:

2012 年 3 月 20 日

閉鎖済み:

2021 年 8 月 20 日

Community Treasure Hunt

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

Start Hunting!

Translated by