Найти последовательность во временных рядах с Matlab
Я хочу написать короткую функцию Matlab для поиска значений последовательности во временном ряду, например:
Пример: a = [0 0 0 1 0 0 1 1 0 1 1 1 1 0 0];
My_expected_result = 3; (как число 1 происходит 3 раза последовательностей)
Спасибо.
1 ответ
Решение
Вот простой regexp
решение для определения количества запусков:
result = numel(regexp(char(a+'0'), '1+'));
Вы также можете использовать strfind
, который работает для числовых массивов (хотя это не задокументировано):
result = numel(strfind([0 a], [1 0]));
Или просто diff
:
result = sum(diff([a 0])<0);
Если у вас есть набор инструментов для обработки изображений, bwlabel
можно использовать и для работы:
result = max(bwlabel(a));
или (спасибо rahnema1 за это):
[~, result] = bwlabel(a);