Borrar filtros
Borrar filtros

How to remove duplicates in an array

3 visualizaciones (últimos 30 días)
MKN
MKN el 2 de Jul. de 2013
Ex: In the array x=[1 2 2 3 3 3 4 5], i want to eliminate all repeating elements (2,3) and retain non-repeating elements (1,4,5)
i.e., If x=[1 2 2 3 3 3 4 5], answer should be x=[1 4 5]

Respuesta aceptada

Octa
Octa el 2 de Jul. de 2013
Editada: Octa el 2 de Jul. de 2013
>> x=[1 2 2 3 3 3 4 5];
>> y = zeros(size(x));
>> for i = 1:length(x)
y(i) = sum(x==x(i));
end
>> for i=length(y):-1:1
if(y(i)>=2)
x(i)=[];
end
end
And your output will be
>>x
1 4 5
  1 comentario
Jan
Jan el 2 de Jul. de 2013
@Octa: Please do not post solutions of homework questions. Reducing the size of an array iteratively has a bad performance. An efficient and more matlabish approach for the 2nd loop:
x = x(x >= 2);

Iniciar sesión para comentar.

Más respuestas (2)

Image Analyst
Image Analyst el 2 de Jul. de 2013
Sounds like homework. As hints, I'd probably use max() to find the greatest integer and the histogram edges, histc() to get the counts, and ismember() to help with removal. It's just a few lines of code - see if you can do it.

Jan
Jan el 2 de Jul. de 2013
You can also SORT the values at first and obtain the sorting index as 2nd output. Then use DIFF to find equal elements. Finally you can remove them and restore the original order by using the sorting index.

Categorías

Más información sobre Multidimensional Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by