Find a value in vector

46 visualizzazioni (ultimi 30 giorni)
Liav Daraf
Liav Daraf il 31 Ago 2017
Commentato: José-Luis il 31 Ago 2017
I have a vector with a 2 million components, how do i find the index of the component which got the value 29.6 in it?

Risposte (1)

KSSV
KSSV il 31 Ago 2017
idx = find(abs(v-29.6)<=10^-5) ;
where v is your vector with a 2 million components.
  2 Commenti
Jan
Jan il 31 Ago 2017
Or: <= 1e-10 or what ever limit is matching.
The idea is that comparisons for equality are weak for floating point values. Perhaps the 29.6 is the result of a calculation and is actually a 29.5999999999999. See https://www.mathworks.com/matlabcentral/answers/57444-faq-why-is-0-3-0-2-0-1-not-equal-to-zero
Note that 10^-5 is an expensive power operation , while 1e-5 is a cheap constant. Matlab does not optimize such constant expressions yet.
José-Luis
José-Luis il 31 Ago 2017
Also, this is probably somewhere you want to use eps().
Depending on the order of magnitude of OP's data, @KSSV's solution might yield junk.

Accedi per commentare.

Categorie

Scopri di più su Operators and Elementary Operations 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!

Translated by