如何在MATLAB中找到矩阵中浮点数的位置(索引)?

时间:2013-04-30 09:42:29

标签: matlab matrix

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

2 个答案:

答案 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)