我正在编写一个函数,其中我需要读取6501 X 1矩阵,然后找到由用户提供的特定数字的索引作为输入。我能够找到整数值的位置,但不能找到列中存在的浮点数。有人可以帮忙吗?谢谢
下面是函数的一部分,它遍历列矩阵以找到数字的索引
format short g
columnmzData = mzData; % mzData is the column matrix
length = size(columnmzData);
i=1;
for mzDataLoop = 1:6501
if (columnmzData(mzDataLoop) == mzValue)
mzValueIndice = i
break;
else
i=i+1;
end
end
以下是列矩阵的一部分:
1498
1498.2
1498.4
1498.6
1498.8
1499
1499.2
1499.4
1499.6
1499.8
答案 0 :(得分:4)
对于浮点数而不是寻找微小的差异而不是完全相等,因此在代码中columnmzData(mzDataLoop) == mzValue
变为abs(columnmzData(mzDataLoop) - mzValue) < tol
,其中tol
非常小并且取决于数字的容差。
Have a look at this question to understand better
但是你根本不应该使用循环!试试find
功能:
mzValueIndice = find(columnmzData == mzValue) %for ints
mzValueIndice = find(abs(columnmzData - mzValue) < tol) %for floats
答案 1 :(得分:3)
找到确切的浮点值很难,也许您可以指定容差?
if (abs(columnmzData(mzDataLoop) - mzValue) < tolerance)