how to check if there are any elements are equal in a vector
53 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commento
Azzi Abdelmalek
il 10 Giu 2013
Please, make it simple, provide a short example, and tell what should be the result
Risposta accettata
Jan
il 10 Giu 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 Commenti
Più risposte (2)
Daniel Shub
il 10 Giu 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 Commenti
Daniel Shub
il 10 Giu 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
il 10 Giu 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.
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!