Verfasst am: 20.02.2012, 19:02
Titel: Rauschen eines Messsignals filtern
Hallo Leute,
ich bin neu hier in Forum und auch im Umgang mit MATLAB bin ich ein absoluter Anfänger.
Ich habe einige Messergebnisse bei denen am Anfang ein starkes Rauschen auftritt obwohl noch keine Kraft eingreift.
Dieses Rauschen möchte ich gerne herausfiltern.
Ich habe nun hier schon etwas herumgestöbert und mir auch einige Tutorials angesehen und es mal mit dem BUTTERWORTH - filter versucht. Das Ergebnis finde ich für den Anfang gar nich mal so schlecht...nur verstehe ich nich genau, wie ich mit den Zahlenwerten umgehen muss.
Was haltet ihr von diesem Filter bei meinem Problem?
Und könnt ihr mir vllt noch einen anderen Filter empfehlen?
Wenn es um Filter geht, sollte man i.d.R. in den Frequenzbereich wechseln und dort das Nutz- und Störsignal untersuchen. Ein Filter kann am wirksamsten eingesetzt werden, wenn beide Signale einen getrennten Frequenzbereich aufweisen. Es gibt hier ein Skript um dein Signal mittels FFT in den Freq.-bereich zu transformieren.
Hier ist alles was du benötigst...am Besten nur diese Darstellung aus dem Skript verwenden:
Code:
% Darstellung des interessierenden Frequenzbereichs des % Amplitudengangs (0...fn) und % daran angepasste Amplitudenskalierung (Normierung auf N/2):
...
nutzt. Signal importieren und dann unter Spectra den Freq.-bereich darstellen lassen. Du benötigst für das sptool die Signal Processing Toolbox von Matlab.
Wenn du das hast und auch dein Nutz- und Störsignal in dem Spektrum lokalisieren kannst, kommt das Filterdesign.
In welchem Punkt denn? Das Skript bietet doch alles (inkl. Testsignal zum Ausführen) und für das Sptool gibt es eine Doku und vermutlich auch einen Demofile. Die Basics von Matlab musst du dir schon selbst aneignen...da kann dir das Forum nur schwerlich helfen.
also ich hab mein signal import und mit dem spectrum viewer den frequenzbereich mit der FFT - Methode anzeigen lassen.
Hierzu schonmal vielen Dank DSP
ich verstehe nun aber den zusammenhang des spectrum viewer mit dem filter design noch nich so ganz. wie passe ich das filter design richtig an meine frequenz an?
gibt es dafür auch eine demo/doku?
Wenn du mir das Spektrum und den Freq.-bereich deines Nutz- und Störsignals zeigen kannst, kann ich dir beim Filter weiterhelfen. Außerdem benötige ich auch noch die Abtastfrequenz.
Bist du dir da sicher...350 kHZ? Normalerweise wird das Spektrum bis zur halben Abtastfreq. dargestellt (wenn man nur den positiven Freq.-bereich betrachtet). In dem Bild geht es aber schon bis 350 kHz. Hast du denn keinen Zeitvektor zu dem Messwertvektor?
Dein Spektrum ist jedenfalls etwas merkwürdig, denn es scheint bei ca. 175 kHz gespiegelt zu sein. Wenn ich mal das Testsignal mtlb aus dem Sptool verwende, wird Fs mit 7418 angegeben und bei der FFT bis Fs/2 dargestellt. Wenn du ein Signal importierst musst du doch auch Fs angeben.
Edit: Oder hast du im Spektrumviewer unter Options -> Freq.-range 0..Fs gewählt?
Ebenfalls müsste man nun wissen, in welchem Bereich dein Nutzsignal liegt...bis ca. 60 kHz? Dann kann man mit einem Tiefpassfilter arbeiten, so dass alle höheren Frequenzen gedämpft werden.
die Abtastfrequenz liefern. Ebenfalls sollte diff(zeitvektor) ein konstanter Wert in dem Ergebnisvektor von diff sein. Ich empfehle dir die Darstellung 0...Fs/2 beim Spektrum.
Die Ordnung entscheidet wie stark das Filter im Sperrbereich (hier ab 320 Hz) das Signal dämpft (glättet). Je höher die Ordnung, desto höher die Dämpfung. Allerdings verlängert sich dadurch die Einschwingzeit, weshalb die Ordnung hierdurch limitiert wird. Irgendwann ist die Einschwingzeit zu lang und das Filter kann schnellen Signaländerungen nicht mehr folgen. In dem Fall ist das Filter unbrauchbar. Du solltest dir in jedem Fall die beiden gefilterten Signale wieder in das Sptool laden und dir den Frequenzbereich anschauen. Ab 320 Hz müssten dann die Amplituden geringer werden (höhere negative dB Werte haben) als das ungefilterte Signal. Falls dir die Dämpfung noch nicht hoch genug, erhöhe die Filterordnung und lade erneut das Spektrum. Den Zeitbereich solltest du natürlich ebenfalls im Auge haben, um das Einschwingverhalten des Filters zu überwachen.
Man kann die Filter aber auch direkt im Sptool erstellen und dann auf das Signal anwenden. Hierzu solltest du mal die Doku durcharbeiten. Wird ja Schritt für Schritt erklärt.
vielen Dank für deine Hilfe, das hat mich deutlich weiter gebracht.
Ich habe aber noch eine Frage zum Grundverständnis des Filters: Mein Nutzsignal liegt im Frequenzbereich zwischen 80 und 300 Hz...ist es möglich, das Signal vor 80 und nach 300 Hz stark zu glätten und dazwischen etwas schwächer?
Um außer den Bereich 80...300 Hz zu glätten benötigst du ein Bandpassfilter. D.h. alles außerhalb des Bereichs wird gedämpft. Leider geht mit dem butter Filter aber neben Hoch-und Tiefpassfilter nur eine Bandsperre. Hier würde dann der angegebene Bereich zwischen der Grenzfreq. fg1 und fg2 gedämpft werden. Du könntest höchstens dein Signal erst mit einem Tiefpass mit fg = 300Hz/fn und danach noch mit einem Hochpass mit fg = 80Hz/fn filtern, wenn du weiterhin die butter Funktion nutzen möchtest. Oder du designed dir mit dem Matlab
ein Bandpassfilter. Es gibt hier in der Skriptecke auch ein Window-Sinc Filter, mit dem man ein Bandpassfilter erstellen kann. Oder du erstellst mit butter eine entsprechendes Bandsperrfilter und wandelts es durch Inversion des Spektrums zu einem Bandpassfilter um. Die beiden erst genannten Varianten sind aber sicherlich einfacher umzusetzen.
Wenn du nun ebenfalls noch den Bereich 80...300 Hz schwächer dämpfen möchtest, benötigst du ein zweites Filter (auch wieder ein Bandpass). Anders geht es nicht, da du die Dämpfung bei einem Filter nicht beliebig in den gewünschten Bereichen einstellen kannst.
zu den Vektoren a und b:
Hier stehen die Filterkoeffizienten drin. Die Übertragungsfunktion des IIR Butterworthfilters ist H(z) = b(z)/a(z) wobei b und a dann jeweils Polynome n-ter Ordnung (b = n-1 ter Ordnung) sind, die du ja mit order festgelegt hast. b ist das Zähler- und a das Nennerpolynom. Für weitere Infos solltest du dir mal den generellen Aufbau solcher Filter anschauen. FIR Filter hingegen haben nur ein Zählerpolynom b. Der Unterschied IIR und FIR ist auch recht schnell mit google zu beantworten.
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.