2016-07-07 132 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