Clear Filters
Clear Filters

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

14 views (last 30 days)
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;

Accepted Answer

Star Strider
Star Strider on 11 Jul 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 Comments

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!