Ich habe das folgende Signal, das einige verzerrte Daten enthältEntfernen Spitzen von einem Signal Matlab
Ich versuche, diese Spitzen zu entfernen, ohne mein Signal zu beschädigen, habe ich versucht, die medfilt1
Funktion, aber es hat auch das richtige Signal geglättet, was nicht gewollt ist. Die Filterung kann wegen der Frequenzüberlappung zwischen dem gewünschten und dem unerwünschten Signal nicht verwendet werden. Ich habe auch versucht, ein sich bewegendes Fenster, die den Wert mit dem Median dieses Fensters vergleichen, und wenn der Punkt, viel höher als es ist, wird es es dem Median eingestellt, wie unten gezeigt:
%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
ich losgeworden habe die Spitzen aber
wie kann ich erreichen, um die besten Entrauschen auf einfache Art und Weise auch wie gezeigt einige der deutlichen Spitzen des Signals wurden unten
in der Figur weg?Dank
Haben Sie versucht: http://stackoverflow.com/questions/27432883/finding-peaks-matlab/27439621#27439621 –
In ** diesem speziellen Fall **, und nur wenn das ** für Präsentationszwecke ist ** Es sieht so aus, als könnten Sie alle Werte unter 350 und über 550 entfernen (oder auf NaN setzen). –
Ihr Code sieht im Allgemeinen OK aus, obwohl ich das Fenster um den Punkt zentrieren würde, an dem ich interessiert bin. Jetzt müssen Sie nur noch Spiel mit Fenster und Bedingungen, wann Ausreißer entfernt werden sollen. Probiere ein Fenster von 30 und wenn der Punkt 2x oder die Hälfte des Median ist. Oder benutzen Sie stattdessen die findpeaks-Funktion und spielen Sie mit dieser. –