Info
Questa domanda è chiusa. Riaprila per modificarla o per rispondere.
finding an item in an array
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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
0 Commenti
Risposte (7)
Aldin
il 20 Mar 2012
Here is my solution:
a = [ 1 2 2 2 4 ];
find(a==2)
ans =
2 3 4
2 Commenti
Daniel Shub
il 20 Mar 2012
+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
il 20 Mar 2012
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
il 20 Mar 2012
3 Commenti
Oleg Komarov
il 25 Mar 2012
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
il 20 Mar 2012
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))
0 Commenti
Aldin
il 21 Mar 2012
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
0 Commenti
MURTADHA ALDEER
il 22 Mar 2012
1 Commento
Daniel Shub
il 25 Mar 2012
If your question is now answered, then accept your answer and upvote anyone that helped.
Questa domanda è chiusa.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!