WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Signal filtern

 

Crob
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 01.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2012, 15:21     Titel: Signal filtern
  Antworten mit Zitat      
Hallo,

ich nutze Matlab derzeit für die Auswertung von unterschiedlichen Messreihen, deren bearbeitetes Ergebnis exemplarisch im angehängten Bild zu sehen ist.

Nun möchte ich gerne einen Filter anwenden, der mir diese Peaks herausfiltert und die Kurve glättet.

Leider habe ich mit Filtern bzw. Filterdesign keine Erfahrungen, bin aber guten Mutes, dass mir jemand von euch weiterhelfen kann. Smile

Vielen Dank schon mal für eure Hilfe.

Signal1.png
 Beschreibung:

Download
 Dateiname:  Signal1.png
 Dateigröße:  9.25 KB
 Heruntergeladen:  890 mal
Private Nachricht senden Benutzer-Profile anzeigen


M@xxx
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.07.12
Wohnort: Erfurt
Version: ---
     Beitrag Verfasst am: 18.07.2012, 01:33     Titel:
  Antworten mit Zitat      
Hi,

also Peaks herausfiltern und Kurve glätten sind zunächst mal unterschiedliche Anforderungen.
Um Peaks zu entfernen wird prinzipiell meistens ein Median-Filter verwendet.
Zur Glättung der Kurve bietet sich ein Gauß-Filter o.Ä. an.

Falls die von dir angehängten Daten allerdings beispielhaft für den kompletten Datensatz sind, würde ich von einem Median-Filter abraten. Eine Größe von 3 würde nicht ausreichen, da die vorhandenen Peaks nicht isoliert an einer diskreten Stelle sind.
Da die Peaks sehr deutlich sind und sehr stark vom Mittelwert abweichen, könntest du sie vermutlich gut erkennen, wenn du berechnest, an welchen Stellen das Signal um mehr als z.B. 10% vom Mittelwert abweicht. An diesen Stellen interpolierst du das Signal dann einfach aus den benachbarten Werten.

Falls noch eine Glättung erforderlich ist, dann ist das auf jeden Fall erst der zweite Schritt.

MfG,
Max
Private Nachricht senden Benutzer-Profile anzeigen
 
Poltergeist12
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2012, 08:31     Titel:
  Antworten mit Zitat      
Stehe im Moment vor dem gleichen Problem wie Crob, M@xxx kannst du vielleicht erläutern wie man deinen Vorschlag der Interpolation in Simulink umsetzen kann?

Vielen Dank und Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
M@xxx
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.07.12
Wohnort: Erfurt
Version: ---
     Beitrag Verfasst am: 03.08.2012, 17:38     Titel:
  Antworten mit Zitat      
Hier ist ein Code, mit dem es gehen könnte.
Einfach mal ausprobieren...

Code:
% IN: signal
% OUT: result

avr = mean(signal);
dev = std(signal);

% Der Faktor muss vielleicht angepasst werden
factor = 3 * dev;

cI = 0;  % counter
cR = 0;

% Erzeuge eine Liste der Stellen, die interpoliert werden sollen und
% einen reduzierten Signalvektor aus den Werten die beibehalten werden und
% deren Stellen
for k=1:length(signal)
    if abs(signal(k) - avr) > factor  % An den Stellen, an denen das Signal das dreifache seiner Standardabweichung überschreitet, wird interpoliert
        cI = cI + 1;
        posInterpolate(cI) = k;
    else
        cR = cR + 1;
        reducedSignal(cR) = signal(k);
        posRedSignal(cR) = k;
    end
end

% Interpolation
result = signal;
result(posInterpolate) = interp1(posRedSignal,reducedSignal,posInterpolate); % lineare Interpolation

% Plotten
plot(signal);
hold
plot(result,'r');
plot((avr + factor)*ones(length(signal)),'g');
plot((avr - factor)*ones(length(signal)),'g');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.