Diese möchte ich ersetzen, entweder durch einen Mittelwert der angrenzenden Punkte oder wenn man es interpolieren kann wär es noch besser.
Leider weiss ich nicht wie ich jetzt in y die in locs gespeicherten Stellen durch einen fit / Mittelwert ersetze?
P.S.: da y schon was grösser sein kann wäre es cool eine Lösung ohne Schleife zu haben.
ich glaube das hier http://www.gomatlab.de/interpoliere.....pikeglaettung-t34107.html ist das, was du suchst. Überall da, wo kein Ausrei0er vorliegt, ist die rote Kurve gleich der blauen Kurve, also dem Original. An den zuvor (irgendwie) gefundenen Ausreißerstellen wird zwischen den nächsten nicht-Ausreißer-Nachbarn interpoliert.
hab gerade gesehen das die ausrereisser im verlinkten Beispiel logical 0 oder 1 sind in einem Vektor der genau so lang ist wie y.
Mein Vektor locs enthält nur die Stellen wo Ausreisser sind. Muss ich nun auch einen logical Vektor erzeugen oder kann man locs auch direkt in interp1 eingeben?
ja, du brauchst den logischen Vektor. Ich habe hier keine signal processing toolbox, aber ich kenne ja die Ausreißerpositionen in meinem Beispiel. Ich würde es dann mit ismember() machen:
Code:
% Daten erzeugen
t = linspace(0,4*pi,2000);
ausreisser = rand(size(t))>0.95;
y = sin(t) + 0.2*(rand(size(t))-0.5);
y(ausreisser) = y(ausreisser)+2*rand(1,sum(ausreisser));
% ab hier startest du
locs = find(ausreisser); % statt findpeaks (ich kenne die Ausreißer ja schon)
invalid = ismember(1:length(y), locs); % logischer Vektor
y_interp = interp1(t(~invalid),y(~invalid), t);
plot(t,y),hold on
plot(t,y_interp,'r-')
Jetzt muss ich nur noch die richtigen Parameter zum Ausreisser suchen finden.
Vielen Dank!
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.