how to check if there are any elements are equal in a vector
53 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Dear fellows,
Do you know how to write a code to check if are there any (Given that I don't know the numbers)elements are equal in a vector? And then read the element.
Many thanks, Xueqi
1 comentario
Azzi Abdelmalek
el 10 de Jun. de 2013
Please, make it simple, provide a short example, and tell what should be the result
Respuesta aceptada
Jan
el 10 de Jun. de 2013
The question is still not clear. Perhaps you want:
nonZero = x(x ~= 0);
anyDuplicates = length(unique(nonZero)) ~= length(nonZero);
Or equivalently:
anyDuplicates = ~all(diff(sort(x(x ~= 0))));
0 comentarios
Más respuestas (2)
Daniel Shub
el 10 de Jun. de 2013
There is no built in function that will do that. You could test the number of unique elements in the vector against the length of the vector
f = @(x)isequal(length(x), length(unique(x)))
I am not sure what you mean by read the element, especially if more than one element is duplicated. Maybe something like
y = 1:length(x);
y(sort(b)) = [];
x(y)
3 comentarios
Daniel Shub
el 10 de Jun. de 2013
You are missing an end. What is c? What is i?
"But it doesn't seem to work." isn't helpful. What do you want to happen? What happens? Your logic about single duplicates and zero, doesn't make any sense to me. You need to explain it in both words and code.
Image Analyst
el 10 de Jun. de 2013
Are they integers, or at least doubles or singles with perfectly, exactly integer values? Do whos() or class() to find out. If they're not integers, you'll have to see if they're within some small tolerance. See the FAQ : http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F for discussion and code example.
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!