Effacer les filtres
Effacer les filtres

How can I find the index of a point in an array?

15 vues (au cours des 30 derniers jours)
Agustin
Agustin le 11 Juil 2017
Commenté : Star Strider le 12 Juil 2017
Hi! I have the following point: tmp = [-119.3 1042.5] and I want the index of this point in a grid. I have two separate grids, xdata and ydata and I'm trying to find the indexes, ipix and jpix. When I'm looking for ipix using
ipix = find(xdata == tmp(1,1))
I get the following:
ipix =
Empty matrix: 0-by-1
The numbers on the xdata and ydata grids are the form -1.193846913204592e+02 and when I write
ipix = find(xdata == -1.193846913204592e+02)
I get
ipix =
71361
which makes no sense. Can somebody help me with this? What I need is to find the index of the given point so I can find the displacement of the point in different images.
Thank you;

Réponse acceptée

Star Strider
Star Strider le 11 Juil 2017
This is due to floating-point approximation error. You have to search within a range of tolerances.
Try something like this:
tol = 0.001;
[xrow,xcol] = find((xdata >= tmp(1,1)-tol) & (xdata <= tmp(1,1)+tol));
[yrow,ycol] = find((xdata >= tmp(1,2)-tol) & (xdata <= tmp(1,2)+tol));
For a more extended discussion, see Why is 0.3 - 0.2 - 0.1 (or similar) not equal to zero? (link)
  4 commentaires
Agustin
Agustin le 12 Juil 2017
Thanks!
Star Strider
Star Strider le 12 Juil 2017
My pleasure!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by