1

我正在编写一个函数,其中我需要读取一个 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
4

2 回答 2

4

对于浮点数,而不是寻找完全相等的微小差异,因此在您的代码中columnmzData(mzDataLoop) == mzValue变得非常小并且取决于您的数字的容差。abs(columnmzData(mzDataLoop) - mzValue) < toltol

看看这个问题以更好地理解

但是,您根本不应该使用循环!试试这个find功能:

mzValueIndice = find(columnmzData == mzValue) %for ints
mzValueIndice = find(abs(columnmzData - mzValue) < tol) %for floats
于 2013-04-30T09:50:00.800 回答
3

找到准确的浮点值很难,也许你可以指定一个容差?

if (abs(columnmzData(mzDataLoop) - mzValue) < tolerance)
于 2013-04-30T09:49:34.767 回答