2013-04-30 82 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

相關問題