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

 Смежные вопросы

  • Нет связанных вопросов^_^