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

Bandstop-Filter filtert nicht

 

Illmatic
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 19.06.12
Wohnort: Hamburg
Version: R2011b
     Beitrag Verfasst am: 19.06.2012, 16:43     Titel: Bandstop-Filter filtert nicht
  Antworten mit Zitat      
Hallo zusammen,
ich möchte gerne von einem Signal einen bestimmtes Frequenzband herausfiltern.
Die Abtastzeit des Signals ist 0.01s.
Das Signal heißt a_mess.
Ich habe mal das Signal und das Spektrum des Signals mit angehangen. Wenn ich das nun richtig verstanden hatte müsste man den Peak bei 15Hz herausfiltern, da dies quasi das Rauschen ist. Dafür wollte ich folgenden Filter verwenden:

Code:

Wn=[14.8;15.2]./100;
[B,A]=butter(2,Wn,'stop');
a_filter=filtfilt(B,A,a_mess);
 


Wenn ich nun allerdings a_filter plotten lasse sehe ich keinen Unterschied zum ungefilterten Signal.

Was habe ich falsch gemacht?
Vielen Dank schon im Voraus!

signal.jpg
 Beschreibung:

Download
 Dateiname:  signal.jpg
 Dateigröße:  22.48 KB
 Heruntergeladen:  1163 mal
ampspec.jpg
 Beschreibung:

Download
 Dateiname:  ampspec.jpg
 Dateigröße:  14.72 KB
 Heruntergeladen:  1194 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: 19.06.2012, 19:01     Titel:
  Antworten mit Zitat      
Das Filter funktioniert schon, allerdings erwartest du eine höhere Dämpfungsleistung, als das Filter bieten kann.

Schau dir mal mit
Code:
den Dämpfungsverlauf deines Filters an. -20 dB sind eben auch nicht gerade viel. Für eine höhere Dämpfung müsstest du die Filterordnung erhöhen...aber das geht mit diesem Filterdesign nicht beliebig. Noch effektiver wäre ein Notchfilter...du willst ja nur einen ganz kleinen Freq.-bereich sperren und dafür sind diese Filter entwickelt worden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Illmatic
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 19.06.12
Wohnort: Hamburg
Version: R2011b
     Beitrag Verfasst am: 19.06.2012, 20:03     Titel:
  Antworten mit Zitat      
Hey danke!
Der funktioniert schon mal viel besser!

Hab ihn folgendermaßen verwendet:
Code:

wo = 15/(100/2);
bw = wo/50;
[B,A] = iirnotch(wo,bw);
a_filter=filtfilt(B,A,a_mess);
 


Nun habe ich allerdings im Internet noch einen anderen Filter gefunden, bei dem ich allerdings nicht recht verstehe wie er funktioniert, der allerdings noch besser filtert (zumindest optisch).

Code:

iN = 13;
a_filter = filtfilt(ones(1,iN)/iN,1,a_mess);
 


Die Ergebnisse habe ich angehangen.

unbekannt.jpg
 Beschreibung:
Mit Filter aus dem Internet

Download
 Dateiname:  unbekannt.jpg
 Dateigröße:  18.47 KB
 Heruntergeladen:  1216 mal
bandstop.jpg
 Beschreibung:
Mit Notch-Filter

Download
 Dateiname:  bandstop.jpg
 Dateigröße:  23.71 KB
 Heruntergeladen:  1190 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.06.2012, 10:21     Titel:
  Antworten mit Zitat      
Das ist ein ganz einfaches FIR Mittelwertfilter mit der Länge 13. Es hat Tiefpassverhalten und dämpft damit nicht nur um deinen gewünschten Bereich von 15 Hz. Es empfielt sich immer wenigstens das Betragsspektrum des Filters anzuschauen. Die Phase hat ja erstmal ein untergeordnete Rolle. So siehst du aber sofort das Dämpfungsverhalten des Filters

Code:

fs = 100; % Abtastfreq. in Hz
fn = 0.5*fs; % Nyquistfreq.
N = 1024; % Anzahl Datenpunkte für Freq.-spektrum
df = fs/N; % Frequenzauflösung des Spektrums
fv = 0:df:fn; Freq.-vektor in Hz

iN = 13; % Filterlänge
B = ones(1,iN)/iN; % Koeffizienten des Zählerpolynom
A = 1; % 1 da FIR Filter
% Betrags- und Phasenspektrum des Filters darstellen
freqz(B,A,fv,fs); % nur positiver Freq.bereich in Hz
 


Das MWF hat insgesamt iN - 1 Nullstellen. Das Dämpfungsverhalten in den Nullstellen des Filters kann man mit einem Notchfilter vergleichen. Die Dämpfung ist dort theoretisch unendlich hoch. Die Nullstellen liegen bei
fs/iN, 2*fs/iN...(iN-1)*fs/iN...was auch in dem oberen Plot von freqz dargestellt ist. Hast du iN bewusst so gewählt? Die 2. Nullstelle liegt nämlich bei 15,3 Hz (=2*fs/iN). Aber das Filter dämpft dein Signal schon ab 3.4 Hz ( = Grenzfreq. des MWF).

Allerdings habe ich an Hand deiner Plots ohnehin den Eindruck, dass du gar nicht ein Notchfilter haben willst, sondern die hohen Freq. aus deinem Signal filtern willst. Dazu wäre das Tiefpassfilter schon richtig...aber da gibt es deutlich leistungsfähigere als dein MWF. Evtl. hilft ja aber auch schon die Funktion smooth()
Private Nachricht senden Benutzer-Profile anzeigen
 
Illmatic
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 19.06.12
Wohnort: Hamburg
Version: R2011b
     Beitrag Verfasst am: 20.06.2012, 11:34     Titel:
  Antworten mit Zitat      
Hallo DSP,
dank deinem Vorschlag habe ich mir mal die Ergebnisse von ein paar Tiefpassfiltern angeschaut und diese tun tatsächlich genau das, was ich wollte. Die Funktion smooth hat das Signal irgendwie an den Rändern nicht korrekt geglättet weswegen der Tiefpassfilter in dem Fall gewinnt.
Vielen Dank für deine Hilfe!
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.06.2012, 11:45     Titel:
  Antworten mit Zitat      
Die Funktion smooth arbeitet beim Ein- und Ausschwingvorgang nicht wie die herkömmlichen Filter. Hier wird etwas getrickst, in dem die ersten Werte nicht wie der Mittelteil gefiltert wird. smooth ist auch nichts anderes als ein gleitender MWF, nur das die Länge des Filters an den Rändern verkürzt wird, um den Ein- und Ausschwingvorgang zu vermindern.
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.