Info

La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.

finding an item in an array

1 visualización (últimos 30 días)
MURTADHA ALDEER
MURTADHA ALDEER el 20 de Mzo. de 2012
Cerrada: MATLAB Answer Bot el 20 de Ag. de 2021
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

Respuestas (7)

Aldin
Aldin el 20 de Mzo. de 2012
Here is my solution:
a = [ 1 2 2 2 4 ];
find(a==2)
ans =
2 3 4
  2 comentarios
Daniel Shub
Daniel Shub el 20 de Mzo. de 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
Aldin el 20 de Mzo. de 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

Jonathan Sullivan
Jonathan Sullivan el 20 de Mzo. de 2012

MURTADHA ALDEER
MURTADHA ALDEER el 20 de Mzo. de 2012
when I use findseq, I get this message
??? Undefined function or method 'findseq' for input arguments of type 'double'.
!
  1 comentario
Jonathan Sullivan
Jonathan Sullivan el 20 de Mzo. de 2012
Make sure you download the function. It is not built into MATLAB.

MURTADHA ALDEER
MURTADHA ALDEER el 20 de Mzo. de 2012
Oh, thank you
But could you help me and let me know how to download a function?
  3 comentarios
MURTADHA ALDEER
MURTADHA ALDEER el 22 de Mzo. de 2012
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 el 25 de Mzo. de 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
Daniel Shub el 20 de Mzo. de 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))

Aldin
Aldin el 21 de Mzo. de 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
MURTADHA ALDEER el 22 de Mzo. de 2012
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 comentario
Daniel Shub
Daniel Shub el 25 de Mzo. de 2012
If your question is now answered, then accept your answer and upvote anyone that helped.

La pregunta está cerrada.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by