У меня есть следующий сигнал, который содержит некоторые искаженные данные
Я пытаюсь удалить эти пики, не повреждая свой сигнал, я попробовал функцию medfilt1
, но она также сгладила правильный сигнал, который не нужен. Фильтрация не может быть использована из-за перекрытия частот между полезным и нежелательным сигналом. Я также попробовал движущееся окно, которое будет сравнивать значение с медианой этого окна, и если точка намного выше, оно установит его на медиану, как показано ниже:
%moving cleaning window
y1_1= y1(1:100);%first window
x=1;
%cleaning loop
while x<= length(y1)
if(y1(x)> 1.01*(median(y1_1))||y1(x) < 0.95*(median(y1_1)))
y1(x)= median(y1_1);
end
if(x>= length(y1)-100)
y1_1= y1(length(y1)-100:length(y1));
else
y1_1 = y1(x:x+100);
end
x=x+1;
end
Я избавился от пиков, но также исчезли некоторые отчетливые пики сигнала, как показано на рисунке ниже.
Как простым способом добиться наилучшего шумоподавления?
Спасибо
NaN
) все значения ниже 350 и выше 550. - person Dev-iL   schedule 22.03.2017