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 eines Messsignals filtern

 

uscjb
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2012, 19:02     Titel: Rauschen eines Messsignals filtern
  Antworten mit Zitat      
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?

Ein ähnliches Messergebnis habe ich mal angefügt

Schonmal Danke im Voraus Wink

matlabforum1.jpg
 Beschreibung:

Download
 Dateiname:  matlabforum1.jpg
 Dateigröße:  169.23 KB
 Heruntergeladen:  1179 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: 20.02.2012, 19:52     Titel:
  Antworten mit Zitat      
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.

http://www.gomatlab.de/fft-umfassendes-beispiel-t777.html

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):
...
 


Noch einfacher geht es, wenn du das

Code:


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.
Private Nachricht senden Benutzer-Profile anzeigen
 
uscjb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2012, 20:59     Titel:
  Antworten mit Zitat      
hi,danke schonmal für deine Antwort.

aber kannst du mir noch etwas genauer erklären, wie ich nun vorgehen muss?
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: 21.02.2012, 00:05     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
uscjb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.02.2012, 13:28     Titel:
  Antworten mit Zitat      
sorry,hatte mich schlecht ausgerückt.

also ich hab mein signal import und mit dem spectrum viewer den frequenzbereich mit der FFT - Methode anzeigen lassen.
Hierzu schonmal vielen Dank DSP Smile

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?
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: 21.02.2012, 22:47     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
uscjb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.02.2012, 13:21     Titel:
  Antworten mit Zitat      
Spektrum hab ich angehängt.Abtastfrequenz müsste 350000 sein. Kann das stimmen?

Danke nochmals Wink

matlabforum2.jpg
 Beschreibung:

Download
 Dateiname:  matlabforum2.jpg
 Dateigröße:  217.21 KB
 Heruntergeladen:  1129 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: 22.02.2012, 13:44     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
uscjb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.02.2012, 14:10     Titel:
  Antworten mit Zitat      
genau das hatte ich bei der freq.-range angegeben Embarassed

mein zeitvektor reicht von 75 bis etwa 233. muss ich den denn auch importieren? oder woher erhalte ich Fs beim Signal importieren?

Sorry, steh grade total auf dem Schlauch. Sad
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: 22.02.2012, 14:24     Titel:
  Antworten mit Zitat      
Die Abtastrate Ts ist ja nichts anders als tn+1 - tn. Also sollte dir

Code:
Fs = 1/diff(zeitvektor(1:2))


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.
Private Nachricht senden Benutzer-Profile anzeigen
 
uscjb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.02.2012, 16:34     Titel:
  Antworten mit Zitat      
OK, hier nun das Spektrum in der richtigen Darstellung.

Die Abtastfrequenz wurde mir mit 2000 angegeben...

matlabforum3.jpg
 Beschreibung:

Download
 Dateiname:  matlabforum3.jpg
 Dateigröße:  197.71 KB
 Heruntergeladen:  1035 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: 22.02.2012, 17:35     Titel:
  Antworten mit Zitat      
Noch hast du nicht erwähnt, welchen Freq.-bereich dein Nutzsignal hat.

Ich nehme mal an, dass es im Bereich 0....320 Hz liegt. Darüber gehört zum Störsignal. Man nimmt deshalb einen Tiefpassfilter.

Code:

order = 10; % Filterordnung
fn = 1000; % Fs/2
fg = 320/fn; % normierte Grenzfrequenz des Filters
[b,a] = butter(order, fg, 'low');
signal_filt_butter = filter(b,a,signal); % Filterung mit IIR Butterworth
% 2. Filter
[b,a] = cheby1(order, 0.5 ,fg ,'low');
signal_filt_cheby = filter(b,a,signal); % Filterung mit IIR - Chebyshev
 


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.
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: 22.02.2012, 18:27     Titel:
  Antworten mit Zitat      
Wenn das Filtern offline passiert und die Ausführungszeit keine Rolle dabei spielt, kannst du auch mal die Funktion

Code:


testen.
Private Nachricht senden Benutzer-Profile anzeigen
 
uscjb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.03.2012, 12:44     Titel:
  Antworten mit Zitat      
hallo DSP,

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?

Und was genau gibt das "a" an?
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: 06.03.2012, 12:47     Titel:
  Antworten mit Zitat      
Zur ersten Frage:

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
Code:

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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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 - 2025 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.