Find all values within a given tolerance of 0

23 ビュー (過去 30 日間)
Benjamin
Benjamin 2018 年 11 月 6 日
コメント済み: Benjamin 2018 年 11 月 6 日
I have a matrix, called "difference". "difference" is 139x101. I would like to output the column numbers (i.e. somewhere between column 1 and column 101), where a value exists (out of the 139) that is within say 0.01% of 0. Is there a way to do this? It would be great if it could output the actual value, and column index. Note that if more than 1 column meets criterion, I want to output both.
  3 件のコメント
Stephan
Stephan 2018 年 11 月 6 日
編集済み: Stephan 2018 年 11 月 6 日
How much is 0.01% from 0 in your case? In the real world it is zero, but i think community knows what you mean. But you need to give a value to calculate 0.01%.
Benjamin
Benjamin 2018 年 11 月 6 日
編集済み: Benjamin 2018 年 11 月 6 日
Sorry the percentage tolerance does not really make sense. I met within a tolerance on the y-axis (not a percentage, but a finite value distance from 0).
I think this seems to work:
C = difference < 0.0001 & difference > -0.0001;
k = find(C);
l= k/density_ids;

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

採用された回答

Guillaume
Guillaume 2018 年 11 月 6 日
編集済み: Guillaume 2018 年 11 月 6 日
Ignoring the 0.01% of 0 and assuming you want the location of elements whose absolute value is less than 0.01, simply:
[row, column] = find(abs(difference) < 0.01)
To get the corresponding values:
values = difference(sub2ind(size(difference), row, column));
  1 件のコメント
Benjamin
Benjamin 2018 年 11 月 6 日
works perfectly, thanks!

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

その他の回答 (0 件)

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by