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 个)

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

2 个评论

+1 for simplicity. While this requires knowing what number is repeated and will fail if multiple numbers are repeated, it does answer the question.
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 个评论

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 个评论

There's a button in the top right that says "Download All." Click that one.
Sorry, Jonathan
I can not find this button
You mean it is in Matlab, or in Matlab website?
Thank you for your valuable efforts
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
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))
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
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 个评论

If your question is now answered, then accept your answer and upvote anyone that helped.

此问题已关闭。

标签

关闭:

2021-8-20

Community Treasure Hunt

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

Start Hunting!

Translated by