Find all values within a given tolerance of 0

17 Ansichten (letzte 30 Tage)
Benjamin
Benjamin am 6 Nov. 2018
Kommentiert: Benjamin am 6 Nov. 2018
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 Kommentare
Stephan
Stephan am 6 Nov. 2018
Bearbeitet: Stephan am 6 Nov. 2018
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 am 6 Nov. 2018
Bearbeitet: Benjamin am 6 Nov. 2018
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;

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Guillaume
Guillaume am 6 Nov. 2018
Bearbeitet: Guillaume am 6 Nov. 2018
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));

Weitere Antworten (0)

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by