Проблема с избавлением от ложных пиков в сигнале - PullRequest
0 голосов
/ 13 июля 2020

У меня есть сигнал PPG, и я пытаюсь найти пики и впадины, используя технику дифференциации. Однако, наряду с обнаружением пиков, этот метод также приводит к появлению множества ложных пиков в сигнале. Код и форма волны приведены ниже, но я хочу избавиться от ложных пиков, но не могу.

 Ydiff=diff(green);  %First  derivative of the input signal
 Peakdiff_logical=Ydiff<0;% positive values to 0 and negative values to 1
 A=diff(Peakdiff_logical);
 Ypeaks=diff(Peakdiff_logical) == 1;
 Ypeaks=[false;Ypeaks;false];
 X= green(Ypeaks);
 for i = 2:length(X)    %% for loop to get rid of false peaks whose amplitude is 60 % less than previous amplitude 
   X(X(i)<0.6*X(i-1))=[];  
 end

for l oop проверяет каждый пик с предыдущей пиковой амплитудой , если текущая амплитуда пика <60% от предыдущего пика амплитуды, то удалите этот пик. Но это для l oop не выполняет работу по устранению пиков, пожалуйста, дайте мне знать, где я ошибаюсь и как я могу исправить ошибку. </p>

Вот сигнал PPG, на котором я ' m пытается найти истинные пики и избавиться от ложных пиков:

1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...