MATLAB: Is there an alternative to “find” for non-integer values

beginnerfaq

Hi,
I need to find all the coordinates in a nx2 matrix which have a certain (x) value. All the coordinates are non-integer so find will not work.
Example:
M = 2.334 3.554
4.443 4.554
3.245 5.332
4.443 2.443
Is there a way to put [4.443 4.445; 4.443 2.443] into a new matrix? Can num2string and back again work or is there a better way? Thanks in advance

Best Answer

Check if it's within a tolerance, as recommended by the FAQ. Try this:
targetValue = 4.443;
tolerance = 0.01;
M = [2.334 3.554
4.443 4.554
3.245 5.332
4.443 2.443]
diffM = abs(M(:, 1) - targetValue)
% Find rows within tolerance of the target value in row 1.
rowsToExtract = diffM < tolerance
% Extract only those rows:
extractedRows = M(rowsToExtract, :)
In the command window you'll see:
M =
2.334 3.554
4.443 4.554
3.245 5.332
4.443 2.443
diffM =
2.109
0
1.198
0
rowsToExtract =
0
1
0
1
extractedRows =
4.443 4.554
4.443 2.443