У меня есть вектор доступности с 1 и 0. 1 означает, что погода хорошая; и 0 означает, что погода не очень хорошая, и место недоступно.Как найти тренд в последовательности в MATLAB?
У меня есть step_duration (например, 10 часов). Учитывая step_index (начало шага) как 101, мне нужно найти окно с прямыми 10 часами хорошей погоды.
Ожидаемое решение: с 10-часовой ожидаемой погодой, скажем, вектор доступности [0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1]. Итак, индексы, которые мы находим, находятся от 109-118. А соответствующая погодная задержка (учитывая, что мы не могли найти часы подряд) - от индекса 101-108 (т. Е. 9 часов). Мне нужно написать код для такого алгоритма.
Некоторые примеры кода, которые я мог думать о том, как следует (хотя это не совсем то, что я хочу):
window = 0; % Initialize the counter for finding the weather window.
for tt = step_index
if Accessibility(tt) == 0
% bad weather, move to next index
% reset window.
window = 0;
k = k + 1;
possible_window(k) = window;
continue
else
% Increase window
window = window + 1;
% sote window history
k = k + 1;
possible_window (k) = window;
end
end
tt = tt + 1;
end
Следует отметить, что решение также может быть скорректирован довольно легко найти произвольную amound единиц в блоке 10. (путем изменения ' == n' в '> = 8' например). –
@DennisJaheruddin Я не уверен, что вы имеете в виду, результат 'conv' здесь не может быть больше, чем' n', и если вы ищете меньшее число, то разве вы не установили бы 'n = 8'? – Dan
Я имею в виду, что это решение также предлагает гибкость, чтобы найти по крайней мере 8 хороших моментов в окне 10. - Комментарий был в основном размещен на благо искателя. –