2016-07-07 135 views
0

如何在特定範圍內使用find函數。MATLAB:查找範圍內的函數

說,我有一個數組arr1與隨機值。我有開始&我想分析的部分的末尾索引(在這個例子中,我想找到值大於0.8時的第一次出現)

find函數在這裏如何與開始和結束的指數和條件呢?

例如:

arr1 = rand(1000,1); 
start_ind = [100;500;850]; 
end_ind = [160;620;925]; 

for i = 1:length(start_ind) 
    output = find(arr1(start_ind(i):end_ind(i)) >=0.8); % ???? 
end 

大加讚賞,

回答

1

使用的find的第二個參數,只得到第一個匹配。您可以通過添加start_ind - 1來移動指數:

arr1 = rand(1000,1); 
start_ind = [100; 500; 850]; 
end_ind = [160; 620; 925]; 

output = zeros(length(start_ind), 1); 
for i = 1:length(start_ind) 
    output(i) = find(arr1(start_ind(i):end_ind(i)) >=0.8, 1) + start_ind(i) - 1; 
end 
+0

感謝您的幫助** nirvana-msu **。如果在這種情況下發現一個高於0.8的值,這可以很好地工作。然而,否則,它會拋出「矩形空矩陣錯誤分配」錯誤。 – Bensa

+0

找到了。如果找不到值,則添加第二行代碼將使其工作:output = find(boost(str_ind(i):end_ind(i))> = 165,1)+ str_ind(i) - 1; (i,1:長度(輸出))=輸出; '謝謝。 – Bensa