Найти последовательность во временных рядах с Matlab - PullRequest
0 голосов
/ 27 октября 2018

Я хочу написать короткую функцию Matlab для поиска значений последовательности во временном ряду, например:

Пример: a = [0 0 0 1 0 0 1 1 0 1 1 1 1 0 0];

My_expected_result = 3; (как число 1 происходит 3 раза последовательности)

Спасибо.

1 Ответ

0 голосов
/ 27 октября 2018

Вот простое решение на основе 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...