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

Rauschen aus Messdatenreihe entfernen/filtern - Problem

 

wabay
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2015, 15:26     Titel: Rauschen aus Messdatenreihe entfernen/filtern - Problem
  Antworten mit Zitat      
Hallo Zusammen,


ich habe eine Frage zu bzw. ein Problem mit dem Herausfiltern von Rauschen aus einer Messdatenreihe. Habe hierzu schon andere Beiträge nutzen können, um meine Ergebnisse schon mal etwas verbessern zu können.

Wenn ich meine Messdaten filtere dann kommt es zwangsläufig zu einer mehr oder weniger starken Verschiebung des "geglätteten Graphen" gegenüber der Ausgangskurve (siehe Bild).
Meine Frage: Kann man diese Verschiebung beseitigen ...bzw. minimieren? Bin noch nicht zufrieden mit meinen Resultaten.

Bisher verwende ich folgenden...recht einfach wirkenden Code:
Code:
% Butterworthfilter
[B,A]=butter(4, 0.125, 'low');   % 0.125 entspricht 100Hz Grenzfrequenz
Daten_gefiltert=filter(B,A,Daten_Eingang);

%Daten_gefiltert und Daten_Eingang sind Matrizen

Ach ja....die Abtastrate des Messsignals sind 1600Hz

Durch "herumspielen" komme ich zu keinen besseren Ergebnissen (kann ja gar nicht zielführend sein...)
Da ich Neuling auf diesem Gebiet bin, wäre es echt gut, wenn mir jemand weiterhelfen könnte, wie ich vorgehen kann, um die Daten zu verbessern!

Schon mal danke im Voraus!
Gruß

Detail.jpg
 Beschreibung:

Download
 Dateiname:  Detail.jpg
 Dateigröße:  66.26 KB
 Heruntergeladen:  722 mal
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.01.2015, 09:09     Titel: Re: Rauschen aus Messdatenreihe entfernen/filtern - Problem
  Antworten mit Zitat      
wabay hat Folgendes geschrieben:

Meine Frage: Kann man diese Verschiebung beseitigen ...bzw. minimieren?


Jain, man kann sie mit einem Trick rückgängig machen. Matlab bietet die Funktion

Code:
filtfilt(B,A,Daten_Eingang)


wodurch das Signal 2 mal gefiltert wird. Beim 2. mal wird dann aber das Signal umgedreht und somit kommt der letzte Messwert zuerst in den Filter. Dadurch wird das Signal wieder zurückgeschoben. Allerdings kann das auch einige unschöne Nebeneffekte haben, die einfach durch die Filtercharakteristik kommen. Wenn du ein Filter mit einem konstanten Delay (viele FIR Filter, dein IIR Butterworth Filter gehört nicht dazu) kannst du es einfach selbst zurückschieben. Ein FIR Filter mit 10. Ordnung (9 Koeffizienten B) verschiebt das Signal dann eben um 9 Abtastwerte.

Es gibt auch Filter, dessen Design auf ein möglichst geringes Delay ausgelegt ist, sogenannte minimalphasige Filter.

Allerdings scheint mir dein Filter nicht ganz geeignet, da es nur sehr träge auf die Flanken des eigentlichen Signals reagiert. Möglicherweise ist auch einfach die Grenzfrequenz schon zu niedrig angesetzt oder der Verlauf der Dämpfung im Sperrbereich einfach nicht optimal. I.d.R. untersucht man ein Signal zunächst u.a. im Frequenzspektrum um dann das Filter auslegen zu können.

Nutze mal die Funktion FFT_betragsspektrum aus diesem Thread: http://www.gomatlab.de/signalverarb.....t,fftbetragsspektrum.html

und poste das Amplitudenspektrum hier. Evtl. auch mal dein Nutzsignal, wie im Bild gezeigt schnell nachbilden und ebenfalls das Amplitudenspektrum erzeugen und mit in den Plot legen. Dann siehst du recht schnell, welchen Frequenzbereich dein Nutzsignal und welchen das Störsignal hat.
Private Nachricht senden Benutzer-Profile anzeigen
 
wabay
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2015, 19:07     Titel:
  Antworten mit Zitat      
Hallo DSP,

zuerst schon mal danke für die Hilfe!!

Ich habe den Ratschlag befolgt und meine Messreihe auf den geposteten Code angewandt. Die Ergebnisse sowie das Ausgangssignal füge ich an.

Die Eingabeparameter sind:
signal = Daten_Eingang
nfft = 401408
fa = 1600
scale = 0

Wie erkenne ich nun welcher Filter gut, welcher weniger gut ist - bzw. welche Einstellungen gut sind?

Ausgangssignal.fig
 Beschreibung:
Das ist das zu filternde Signal...

Download
 Dateiname:  Ausgangssignal.fig
 Dateigröße:  5.09 MB
 Heruntergeladen:  740 mal
Figure2.fig
 Beschreibung:

Download
 Dateiname:  Figure2.fig
 Dateigröße:  4.22 MB
 Heruntergeladen:  734 mal
Figure1.fig
 Beschreibung:

Download
 Dateiname:  Figure1.fig
 Dateigröße:  4.27 MB
 Heruntergeladen:  746 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 25.01.2015, 12:03     Titel:
  Antworten mit Zitat      
Hallo wabay,

sorry das ich erst jetzt antworte. Ich hatte einfach keine Zeit mir deine. fig files vorher genauer anzusehen.

Ich habe mir deine Daten aus dem fig file exportiert und anschließend gefiltert.

Code:

openfig('Ausgangssignal.fig')
h=get(gca,'Children');
tt=get(h,'XData');
yy=get(h,'YData');

[B,A]=butter(4,100/800, 'low');   % 0.125 entspricht 100Hz Grenzfrequenz
Daten_gefiltert=filtfilt(B,A,yy);

hold on;
plot(gca,tt,Daten_gefiltert,'r');
grid on;
 


Zunächst habe ich mich gewundert, was diese Daten mit dem Bildausschnitt im ersten Post zu tun haben. Aber das zeigt nur das Ende, wo das Störsignal einen deutlich höheren Anteil hat da die Amplitude des Nutzsignals so gering ist. Du kannst deinen Filtervorschlag ruhig verwenden und eben einfach filtfilt benutzen um das Signal um das Filterdelay wieder zu verschieben. Bis auf das Ende, wo das Filter etwas zu träge auf die Signaländerungen reagiert, ist das Ergebnis ok. Aber das sind ja nur die letzten 2 Sekunden des Signals. Die "restlichen" 248s sind damit aber sauber gefiltert.
Private Nachricht senden Benutzer-Profile anzeigen
 
TommyLeeJones
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2015, 17:11     Titel:
  Antworten mit Zitat      
Hallo zusammen,

ich klinke mich einfach mal frecherweise in die Unterhaltung mit ein! Embarassed

Ich habe gerade ein ähnliches Problem:

Zitat:
Nutze mal die Funktion FFT_betragsspektrum aus diesem Thread: http://www.gomatlab.de/signalverarb.....t,fftbetragsspektrum.html

und poste das Amplitudenspektrum hier. Evtl. auch mal dein Nutzsignal, wie im Bild gezeigt schnell nachbilden und ebenfalls das Amplitudenspektrum erzeugen und mit in den Plot legen. Dann siehst du recht schnell, welchen Frequenzbereich dein Nutzsignal und welchen das Störsignal hat.


Wie sehe ich in den Plots die Frequenzbereiche von Nutzsignal und Störsignal, wie lese ich hier nun die Grenzfrequenz ab?

Vielen Dank schon mal,
viele Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 29.01.2015, 18:43     Titel:
  Antworten mit Zitat      
Hallo,

bitte mal konkreter werden und am Besten einen eigenen Thread dazu starten. Mit Bild der Daten im Zeit- und Frequenzbereich...
Private Nachricht senden Benutzer-Profile anzeigen
 
TommyLeeJones
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 17.12.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2015, 12:46     Titel:
  Antworten mit Zitat      
Hallo DSP,

sorry, ich dachte, das passt hier her Smile

Hab einen neuen Thread gestartet:
http://www.gomatlab.de/viewtopic,p,144936.html#144936

Danke
Grüße
Thomas
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.