Как убрать «неинтересные» части сигнала из неоднородного сигнала, используя функции MATLAB? - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть сигнал (и) человека, поднимающегося по лестнице) следующего характера.Это сигнал с 38K + сэмплами в течение 6 минут подъема по лестнице.Части, где присутствует низкочастотный шум , - это моменты, когда человек совершает поворот , чтобы добраться до следующего лестничного пролета ( и, следовательно, не считается лестницейвосхождение .)

Рисунок 1

Именно поэтому мне нужно избавиться от него для моей модели глубокого обучения, которая принимает только данные подъема по лестнице.По сути, мне нужны только высокочастотные регионы, где человек поднимается по лестнице.Я мог бы устранить это вручную, но это заняло бы у меня много времени, поскольку таких сигналов 58.

Мой подход к решению этой проблемы заключался в модулировании этого сигнала прямоугольной волной, которая равна 0 для низкого уровня.частотные области и 1 для высокочастотных областей, а затем умножить сигналы вместе.Но проблема в том, как создать такой прямоугольный сигнал, который самостоятельно определяет высокочастотные и низкочастотные области?

Я попытался обернуть сигнал (используя среднеквадратичную функцию огибающей MATLAB) и получил следующий результат:

Рисунок 2

Как видите, среднеквадратичный сигнал огибающей достаточно хорошо следует функции.Но я застрял в том, как создать из него модулирующую прямоугольную волновую функцию (по сути, то, что я прошу для переменной модулирующей волны с шириной импульса).

PS: я рассмотрелиспользование фильтра верхних частот, но это не сработает, потому что в области высокочастотного подъема по лестнице есть некоторые низкочастотные сигналы, которые я не могу позволить себе удалить.Я также думал об использовании какой-либо формы обнаружения нарастающего / падающего фронта (для среднеквадратичной функции огибающей), но не нашел практического способа ее реализации.) Пожалуйста, сообщите.

Заранее спасибо за вашу помощь, Шрейя

Спасибо Дэвиду за его предложение о пороге, которое я сделал с моим набором данных, у меня есть эти результаты ... хотя я снова застрял с попыткой избавиться от избыточных пиков между нулями (см. Изображение ниже) Что мне делатьделать дальше?

Рисунок 3

Я думаю, что мне удалось решить мою проблему, состоящую в том, чтобы успешно изолировать "интересную" часть сигнала от всего исходного сигнала, используяследующая процедура (для будущего чтения читателя):

Неоднородный сигнал, такой как рисунок 1, может использовать функцию MATLAB «envelope (rms)» для получения функции оранжевого цвета, такой как функция на рисунке 2Впоследствии я отфильтровал этот сигнал для разработчиков, используя собственную функцию MATLAB «idfilt».Это позволило мне избавиться от нежелательных пиков (между нулями), возникающих между «интересными» частями сигнала.Затем, используя пороговое значение, я преобразовал эту форму волны, чтобы она была равна 1 в «интересных» частях и 0 в «неинтересных» частях, давая мне широтно-модулированную прямоугольную форму волны, которая следует ТОЛЬКО за «интереснойчасти исходного сигнала (на рисунке 1) Затем я умножил свой квадратный сигнал на исходную функцию и смог отфильтровать «неинтересные» части, как показано на рисунке 4.

Рисунок 4

Спасибо всем за помощь! Теперь эта тема решена!

...