MATLAB Answers

find function with floating points number

3 views (last 30 days)
sermet
sermet on 8 May 2014
Answered: Star Strider on 8 May 2014
distances=[100.2545 120.6632;200.8588 220.4465]
points_id=[{'p1'} {'p2'};{'p3'} {'p4'}]
pointfind = @(d) points_id(find(distances == d));
p = pointfind(120.6632)
%it gives
p1 =
Empty cell array: 0-by-1
%this function only works with integers but I need to work with floating points number.

  0 Comments

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 8 May 2014
This revision of pointfind should work:
pointfind = @(d) points_id(find(fix(distances*10^(length(num2str(rem(d,1)))-2))/(10^(length(num2str(rem(d,1)))-2)) == d));
(It obviously all goes on one line, although it wraps here.)
You are dealing with differences in precision between the values stored in distances and the precision in the argument ‘d’ you present to pointfind. The revised version of pointfind truncates the elements of distances to the precision of ‘d’ before it does the comparison. It works with decimal fractions now.

  0 Comments

Sign in to comment.

More Answers (1)

Alessandro
Alessandro on 8 May 2014

  1 Comment

sermet
sermet on 8 May 2014
that's no the same thing I'm looking for. Here I need to define pointfind function as working floating numbers.

Sign in to comment.