2013-04-30 134 views
1

我正在写一个函数,我需要读取6501 X 1矩阵,然后找到由用户提供的特定数字的索引作为输入。我能够找到整数值的位置,但不能找到列中存在的浮点数。任何人都可以帮忙吗?谢谢如何在MATLAB中找到矩阵中浮点数的位置(索引)?

下面是函数的一部分遍历列矩阵找到了一些

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 

回答

3

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

if (abs(columnmzData(mzDataLoop) - mzValue) < tolerance) 
+1

该功能现在可用!谢谢:) – novicegeek 2013-04-30 17:44:31

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 
+0

为什么downvote? – Dan 2013-04-30 09:59:08