find function with floating points number

1 回表示 (過去 30 日間)
sermet
sermet 2014 年 5 月 8 日
回答済み: Star Strider 2014 年 5 月 8 日
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.

採用された回答

Star Strider
Star Strider 2014 年 5 月 8 日
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.

その他の回答 (1 件)

Alessandro
Alessandro 2014 年 5 月 8 日
  1 件のコメント
sermet
sermet 2014 年 5 月 8 日
that's no the same thing I'm looking for. Here I need to define pointfind function as working floating numbers.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by