Обнаружить основные события в данных сигнала?

Если у меня есть сигнал, как показано ниже, как мне найти начало и конец двух «основных событий» (показаны зеленой стрелкой, где событие начинается, и красной стрелкой, где оно заканчивается)?

Сигнал

Я попробовал метод, предложенный в этом ответе, но кажется, что сколько бы я ни играл с lag, threshold и influence, он либо реагирует на крошечные изменения в начале, середине и конце графика (где нет крупных событий), либо не реагирует вообще.

Я не могу просто определить, превышает ли сигнал фиксированный порог, поскольку сила сигнала может варьироваться, поэтому мне нужен какой-то способ обнаружения, когда сигнал сильно отклоняется от «фонового шума». Кроме того, иногда сигнал может находиться в общем тренде, как на графиках ниже.

Экспоненциальный тренд

Линейный тренд

Я уже применяю к сигналу простой фильтр нижних и верхних частот. Я хотел бы получить что-то вроде оранжевого сигнала на графике ниже (я нарисовал его вручную только для иллюстрации).

введите здесь описание изображения


person Magnus W    schedule 27.04.2017    source источник
comment
Я бы предложил использовать медианный фильтр для извлечения фона, а затем искать пересечения нуля. Если вы можете предоставить образец данных, возможно, файл txt, я могу помочь.   -  person Ozcan    schedule 28.04.2017
comment
Что касается отделения этих событий от фоновой информации, вы можете захотеть просмотреть участки вашего сигнала с высокой энтропией выборки. en.wikipedia.org/wiki/Sample_entropy   -  person Open Season    schedule 01.05.2017


Ответы (1)


Вы можете попробовать пару вещей. Оба эти варианта так или иначе зависят от знания типа ожидаемого необычного события.

Скажем, вы знаете, что события обычно имеют длину 100 сэмплов. Создайте этот сигнал и исследуйте пики.

indicator = filtfilt(ones(1, 100) ./ 100, 1, abs(signal));

Это будет выглядеть примерно как ваш оранжевый сигнал.

Во-вторых, вы можете попробовать исследовать изменение сигнала от образца к образцу.

indicator = abs(diff(signal));

Если вы действительно хотите сделать все возможное, попробуйте 1D-сверточную нейронную сеть. Для этого требуются помеченные обучающие данные.

person Open Season    schedule 27.04.2017