У меня есть сигнал 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