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

Frequenzanteile aus Signal filtern

 

Alex_S
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2012, 07:48     Titel: Frequenzanteile aus Signal filtern
  Antworten mit Zitat      
Hi,
Ich habe wieder eine Frage zur Signalverarbeitung mit Matlab. Ich möchte aus einem Zeitsignal bestimmte Frequenzen herausfiltern. Siehe Spektrum im Anhang. Da ich leider sehr unerfahren in der Signalverarbeitung bin wollte ich hier einmal nach Möglichkeiten fragen das mit Matlab umzusetzen.

Das Signal s liegt als nx2-Matrix vor wobei s=[t s(t)] und n die Anzahl der Zeitschritte ist. Danke für eure Hilfe!

Gruß Alex

Spektrum.jpg
 Beschreibung:

Download
 Dateiname:  Spektrum.jpg
 Dateigröße:  103.8 KB
 Heruntergeladen:  1296 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: 07.08.2012, 09:00     Titel:
  Antworten mit Zitat      
Bist du dir sicher, dass deine Frequenzachse so stimmt? Das diskrete Spektrum wird ja im positiven Frequenzbereich bis zur halben Abtastrate fs dargestellt.

Du verwendest hier die Kreisfrequenz w = 2*pi*f
wn = halbe Abtastfreq. = 3 rad/s

fn = 3/(2*pi) = 0.477 Hz -> Abtastfreq. = 0.95 Hz

Das kommt mir aber sehr wenig vor.

Aber gut...es gibt mehrere Möglichkeiten das Signal zu Filtern.

1.) Tiefpass Filter, dabei werden alle Freq.-anteile über der cutoff frequency fc gedämpft. Wenn du nur den Signalanteil vor dem Peak haben willst, die beste Variante.
2.) Bandstop Filter...hier wird nur ein Freq.-bereich innerhalb der Grenzen fc1 und fc2 gedämpft
3.) auf Grund der Breite deines Peaks evtl. nicht möglich...ein Notchfilter. Dies ist eine spezielle Form des Bandstop Filters, wobei nur ein kleiner Bereich (eigentl. eine Notchfrequenz) gedämpft wird.

Hier mal ein Bsp. für Punkt 2

Code:

fs = 1000 ;% Abtastfrequenz in Hz
fn = 0.5 * fs; % Nyquistfre. in Hz
fc1 = 10/fn ; % normierte Cutoff Freq. 1 in Hz
fc2 = 30/fn ; % norm. Cutoff Freq. 2 in Hz
order = 10; % Die Höhe der Filterordnung bestimmt den Grad der Dämpfung, aber auch die Verzögerung (Phasenverschiebung), die das Filter erzeugt.

% Filterdesign als IIR Butterworth
% Hier wird nun ein Bandstop Filter mit 10. Ordnung erstellt, der den Bereich 10...30 Hz dämpft.
d=fdesign.bandstop('n,fc1,fc2', order, fc1, fc2);
% Filterobject erstellen
hd = butter(d);

% Signal filtern
signal = ....; ungefiltertes Signal
signal_filt = filter(hd,signal);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex_S
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 20.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2012, 09:54     Titel:
  Antworten mit Zitat      
Danke ! Der Bandstopfilter scheint mir eine gute Möglichkeit zu sein. Abtastfrequenz von 1Hz ist korrekt (das Signal ist eine Meeresströmung gemessen in 1s Schritten).

Gruß Alex
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: 07.08.2012, 10:04     Titel:
  Antworten mit Zitat      
Alles klar...

Es gibt auch noch andere IIR Filtervarianten als einen Butterworth...Cheby, Bessel etc., wodurch sich die Eigenschaften des Filters (Dämpfungs- und Phasenverlauf unterscheiden). Sollte der Butterworth nicht passen, müsstest du am Besten mal deine y-Achse des Freq.spektrums dB (logarithmisch) skalieren. Damit lässt sich dann die benötigte Dämpfung besser abschätzen. Ich würde aber zunächst mal die Grenzen festlegen und nun verschiedene Filterordnungen testen.
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.