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

Tiefpassfilterung-Eliminierung Impuls/Sprungantwort EKG Sign

 

MedTurtle

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2009, 13:51     Titel: Tiefpassfilterung-Eliminierung Impuls/Sprungantwort EKG Sign
  Antworten mit Zitat      
Hi Forum,

Vorerläuterung:
ich versuche derzeit in Matlab ein GUI zu realisieren, das Patientendaten (EKG) aufnimmt und dann analysieren soll. Prinzipiel ist das Programm auch fertig (d.h. peakdetection, Analyse-Algorythmen usw schon integriert), allerdings möchte ich das Signal noch "tiefpassfiltern", um hohe Frequenzanteile zu eliminieren. Deshalb habe ich mit der Filter-Design Toolbox einen Tiefpass erstellt, der wie folgt ausschaut:

Code:

function gefiltert = tiefpass(signal_ungefiltert,Fs);
% Tiefpass-Filter um Hohe Frequenztanteile zu eliminieren
Fpass = 250;         % Passband Frequency
Fstop = 450;         % Stopband Frequency
Apass = 1;           % Passband Ripple (dB)
Astop = 80;          % Stopband Attenuation (dB)
match = 'passband';  % Band to match exactly

% Construct an FDESIGN object and call its CHEBY1 method.
h  = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
Hd = design(h, 'cheby1', 'MatchExactly', match);
gefiltert = filter(Hd,signal_ungefiltert);
end
 


Ich habe auch schon andere Filteroptionen versucht (Butterworth, Eliptic, etc)

Das Problem:
Bei jedem Filter habe ich am Beginn der gefilterten Daten einen Einschwingvorgang. dieser sieht dann wie folgt aus:


Gibt es eine andere Möglichkeit, diese Impuls/Sprungantwort zu unterdrücken, außer die ersten paar Werte des Signals wegzuschneiden?

Alternativer Lösungsansatz:
Ein Freund von mir hat mir geraten, den Tiefpass anders zu realisieren, imdem ich das SIgnal Fouriertransformiere und dann alle Frequenzanteile, die höher als die halbe Abtastfrequenz sind gleich 0 setze und anschließend das Signal wieder zurücktransformiere. Hört sich irgendwie sinnig an, aber ich habe keine Ahnung, was passiert, wenn das Signal (30.000x1 Vektor) per fft transformiert wird, was dann die skalierung der x-Achse ist und wie ich die Abtastfrequenz dazu in Verbindung setzen kann.

Ist es überhaupt sinnvoll, diesen weg zu gehen? Ich vernachlässige bisher die Imaginärteile der fft und arbeite nur mit den Realteilen, ist das ein Fehler?


Danke, dass ihr euch die Zeit genommen habt, danke auch, für jede Hilfe (im Vorraus)

Grüße,

Andrea

PS: Wenn möglich bitte so erklären, dass auch ein Nicht-Signaltheoretiker oder Mathematiker wie ich das versteht Smile

nach_tiefpass.png
 Beschreibung:
Signal, nachdem es den Tiefpass passiert hat

Download
 Dateiname:  nach_tiefpass.png
 Dateigröße:  10.82 KB
 Heruntergeladen:  868 mal


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.