\documentclass[a4paper,12pt,titlepage]{scrartcl} \usepackage[sc]{mathpazo} % Schrift - wie Funcky und in PDF zu Fonts beschrieben \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[a-1b]{pdfx} \usepackage[ngerman]{babel} \usepackage[amssymb]{SIunits} \usepackage{graphicx} \usepackage{subfigure} \usepackage{float} \usepackage[iso,german]{isodate} %his package provides commands to switch between different date formats \usepackage{hyperref} \usepackage{listings} \usepackage{graphicx} \usepackage[export]{adjustbox} \usepackage{fancyhdr} \renewcommand{\headrulewidth}{0.5pt} \renewcommand{\footrulewidth}{0.5pt} %Abstand zwischen Absätzen, Zeilenabstände \voffset26pt \parskip6pt %\parindent1cm %Rückt erste Zeile eines neuen Absatzes ein \usepackage{setspace} \onehalfspacing \begin{document} \pagenumbering{roman} \titlehead { \small { Technische Universität Ilmenau\\ Fakulät IA\\ Fachgebiet Biosignalverarbeitung\\ Praktikum EKG-Signalanalyse\\ WS 2021/22} } \title {Versuchsprotokoll} \subtitle{EKG-Signalanalyse} \author{} \date{14. Januar 2022\\*[60pt]} \title {Versuchsprotokoll: EKG-Signalanalyse} \subtitle{Praktikumsbetreuer: Marc Heppner} \author{Teilnehmer: Robert Jeutter \& Leonard Seifert} \date{ Datum Versuchsdurchführung: \quad 14.01.22\\ Datum Protokollabgabe: \quad 28.01.22 } \maketitle %Erstellt das Titelblatt wie oben definiert %Einstellungen zur Kopf- und Fußzeile \pagestyle{fancy} \fancyhead[R]{Praktikumsbericht: EKG-Signalanalyse} \pagenumbering{arabic} \newpage % === Einverstaendniserklaerung ================================================ \vspace*{8cm} Erklärung: \noindent ,,Hiermit versichern wir, dass wir dieses Praktikum selbständig vorbereitet, mit dem Praktikumsleiter durchgeführt und selbständig nachbereitet haben und nur die angegebenen Quellen und Hilfsmittel verwendet haben.'' \newpage \section{Vorbereitungsaufgaben} \subsection{EKG-Vorverarbeitung} \texttt{Entwickelung einer Strategie zur EKG-Vorverarbeitung. Bedenke dabei, dass die EKG-Vorverarbeitung maßgeblichen Einfluss auf die Qualität der QRS-\\ Detektion hat.} Bei der EKG Signaldetektion enthält das auszuwertende Signal neben dem gewünschten EKG verschiedene Störsignale. Diese Störsignale können in zwei Kategorien eingeteilt werden: stochastische und deterministische Signale. In der Vorverarbeitung ist es unser Ziel die deterministischen Störungen zu entfernen. Eines der bekannten niedrigfrequenten Signale entsteht durch die Atmung und bildet sich als Drift in dem Signal ab. Dieser Fehler kann mit einem Hochpass behoben werden, der die niederfrequenten Signale entfernt. Desweiteren nutzen wir den bekannten Frequenzbereich in dem der größte Energieanteil des QRS Komplexes liegt zwischen 5-26 Hz mithilfe eines Bandpasses, um die Störsignale außerhalb dieses Bereiches im Vergleich zu unserem gewünschten Signal abzuschwächen. Das Ergebnis der Vorverarbeitung soll ein driftarmes und von größeren deterministischen Störsignalen befreites Signal liefern. \subsection{QRS-Detektion} \texttt{Entwickelung einens Algorithmus zur adaptiven QRS-Detektion. 250 ms Zeit-\\vorlauf sollen dabei nicht überschritten werden} \begin{enumerate} \item Hochpass zur Driftkompensation \begin{enumerate} \item Fourier Transformation \item entfernen niedriger Frequenzen \item Rücktransformation mit Inverser Fouriertransformation \end{enumerate} \item Bandpass zur Beschränkung auf niederfrequente Biosignale zwischen 5-26 Hz \item Minimale Distanz zwischen Peaks der R-Spitzen ermitteln \begin{enumerate} \item Kopie des Signal erstellen zur verlustfreien Bearbeitung \item Skalierung des Signals \item Kleine Peaks entfernen bzw. auf null setzten \item alle übrigen Peaks finden \item minimalen Abstand aller (übrigen) Peaks ermitteln \end{enumerate} \item Threshold festlegen (Halbe Signalstärke) \item Signalspitzen zwischen minimaler und maximaler Distanz, die über dem Threshold liegen, ermitteln \end{enumerate} \texttt{Entwickele zu diesem Algorithmus die zugehörige(n) MATLAB-Funktion(en)} \begin{lstlisting}[basicstyle=\scriptsize, language=matlab] function [R_Positionen, Entscheidungssignal, Schwellwertverlauf, Lernphase] = QRS_Detektion (EKG_Signal, fa); size = length(EKG_Signal); % Laenge des Signals % fourier transformation signal = fft(EKG_Signal); % entfernen niedriger freqzenzen anhand Laenge und Rate signal(1 : round(size*5/fa))=0; signal(end - round(size*5/fa) : end)=0; % inverse fourier transformation signal=real(ifft(signal)); % bandpass fuer 5 bis 26 hz signal=bandpass(signal, [5 26], fa); % skalierung des Signals auf skala 1-10 filtersignal=signal/(max(signal)/10); % entfernen aller peaks unterhalb des thresholds 10/2=5 for data = 1:1:length(filtersignal) if filtersignal(data) < 5 filtersignal(data) = 0; else filtersignal(data)=1; end end % finde alle uebrigen peaks, die ueber dem threshold lagen positions=find(filtersignal); % abstand der ersten beiden peaks distance=positions(2)-positions(1); % setzte den abstand auf das minimum zweier peaks in der reihe aller uebrigen peaks for data=1:1:length(positions)-1 if positions(data+1)-positions(data) höhere ordnung benötigt % FIR, hochpass, fu=2, ordnung 500 \end{minipage} \end{figure} \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-15-50-45.png} \caption{DB100 V5} \label{db100v5} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} Von Kanal 1 auf Kanal 2 wir ein einseitiger FIR-Bandpass mit $fu=2$ und $fo=30$ Hz 5. Ordnung eingesetzt. Von Kanal 2 auf Kanal 3 wird der Notch Filter erneut eingesetzt und in Abbildung \ref{db100v5} sichtbar. %warum kommt es am anfang zu niedrigen werten? hinweis blockdiagramm mit struktureinheiten Zu Beginn des Ausgangssignals kommt es zu niedrigen Werten. Das liegt daran, dass in jedem Arbeitsschnitt die letzten ~250ms in dem FIR Filter zur Berechnung der Filterantwort herangezogen werden. Zusätzlich wurde das Signal um ungefähr 250ms verzögert. %warum ist in k3 unten komisches gezappel? Bei ~250ms des Zeitverlaufs bezieht sich der Bandpass auf den ersten eingegangen Wert des K1 Signals und führt eine Nullpunktanpassung aus. Dadurch entsteht eine Signalspitze die falsch als R-Spitze erkannt werden könnte. Der Notch Filter entfernt das 50Hz Rauschen zuverlässig. \end{minipage} \end{figure} \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-15-54-32.png} \caption{DB106} \label{db106} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} Derselbe FIR-Bandpass und Notch-Filter aus \ref{db100v5} wurde hier in Abbildung \ref{db106} verwendet und führt zu einem guten Ergebnis, aus dem die R-Spitzen klar ablesbar sind. %db106-> bild gleiche werte \end{minipage} \end{figure} \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-15-57-50.png} \caption{DB108} \label{db108} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} In Abbildung \ref{db108} wurde wieder der FIR-Bandpass und Notch Filter aus \ref{db100v5} verwendet. Das Ergebnis ist wieder gut und für eine Detektion nutzbar. %db108 -> bild, gleiche werte %verschiebung von k1 zu k2 mit fir %-> woher kommt die verschiebung, begründen, lösung? %welche probleme können hierbei entstehen in der analyse? \end{minipage} \end{figure} \cleardoublepage %Lernphase= Länge der lernphase in der das signal analysisert und für die online erkennung bereit sein soll, max 250ms %Driftkompensation, Bewegunsartefakte entfernen %fir: finite impuls antwort %iir: infinite impuls response %iir könnte signal so verändern, dass pathologische fehler nicht mehr erkennbar sind, verzerrt %- phasenverschiebung %einseitig - online Fähig %zweiseitig - offline fähig Die Versuche zeigen, dass Notch-Filter eine gute Eliminierung des 50 Hz-Netz-\\rauschens erreichen. IIR- und FIR-Filter können insbesondere zur Eliminierung von niederfrequenten Störungen durch den Drift verwendet werden. Die Realisierung mit FIR-Hochpässen ist Aufwändig, da eine hohe Filterordnung für das enge Filtergrenze vonnöten ist. Besonders in den Abbildungen \ref{db100v5}, \ref{db106} und \ref{db108} ist auch ersichtlich, dass der FIR-Filter den Nachteil der längeren Laufzeit aufweist und damit das Signal verzögert. Dennoch liefert der FIR-Filter gute und verwertbare Ergebnisse und ist selbst durch seine Stabilität und Vorhersagbarkeit im Vergleich zum rückgekoppelten IIR-Filter von Vorteil. Aus den ersten Versuchen der Sektion \ref{EKG-Vorverarbeitung} ist dabei auch zu berücksichtigen, dass IIR-Filter das Ausgangssignal im Gegensatz zu FIR-Filtern verzerren, was Signale so verändern kann, dass pathologische Fehler nicht mehr erkennbar sind. \subsection{QRS-Detektion mit Hilfe von MATLAB} \texttt{Implementiere den entwickelten Algorithmus zur QRS-Detektion in die Funktion QRS\_Detektion.m} Der Code der QRS Detektion aus den Vorbereitungsaufgaben wurde in das Programm eingefügt. Der vorgeschlagene Algorithmus verwendet einen Hochpass- und Bandpassfilter um danach mit einem aus dem Verlauf gemittelten Threshold die R-Spitzen zu erkennen. \vspace{2cm} \texttt{Evaluiere den QRS-Detektor anhand der EKG-Signale der MIT-Datenbank. Notiere die Detektionsquote. Wo liegen die Stärken bzw. die Schwächen des Detektors? Versuche anhand der Ergebnisse dieses ersten Detektionstests den Detektions-\\algorithmus bzw. (falls angebracht) auch die EKG-Vorverarbeitung zu optimieren! Wiederhole den Detektionstest! Inwieweit konnten die Detektionseigenschaften verbessert werden?} \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-16-14-54.png} \caption{QRS DB100} \label{qrsdb100} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} Abbildung \ref{qrsdb100} zeigt den gesamten Verlauf des EKG Signals mit der QRS Detektion. Im unteren Bildteil wird die Fehlerzahl der Falsch-Positiven und Falsch-Negativen Detektionen und ein Prozentwert der Fehlerquote angezeigt. Der Fehler in dieser Detektion ist sehr hoch. Viele Teile des Signals wurden fälschlich als R-Zacke erkannt, was auf einen zu niedrigen Threshold hinweist. Durch den niedrigen zeitlichen Anteil der R-Spitze im Vergleich zur Dauer des Restsignals liegt der Gesamtmittelwert sehr niedrig. Der Matlab Code musste deswegen angepasst werden. %Db100: Bild % hohe Fehlerrate, zu viele Signale werden als False Positiv erkannt % notwendige anpassung des Matlab code; ändern von Mittelwert bilden zu Maximum Amplitude halbieren als threshold \end{minipage} \end{figure} \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-16-32-42.png} \caption{QRS DB100 V2} \label{qrsdb100v2} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} Der Treshold wird nicht mehr über den Mittelwert aller Punkte ermittelt. Stattdessen wird die maximale Amplitude bestimmt und halbiert. Dies dient dazu, nur Signale oberhalb der P-, T- und U-Wellen zu erkennen. Das sollte die Erkennung auf R-Spitzen beschränken. Die Erkennung für Datensatz 100 in Abbildung \ref{qrsdb100v2} ist wesentlich besser geworden im Vergleich zu Abbildung \ref{qrsdb100}. \end{minipage} \end{figure} \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-16-33-27.png} \caption{QRS DB106} \label{qrsdb106} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} In Abbild \ref{qrsdb106} sieht man die Detektion des Datensatz 106. Während die Erkennung zu Beginn gut ausfällt, fällt diese im letzten Drittel rapide herab. Das liegt an der Amplitudenänderung des Signals, an die sich der Matlab Algorithmus nicht anpasst. Stattdessen wird weiter mit dem globalen Threshold gearbeitet und R-Spitzen und diesem nicht mehr erkannt. Eine Verbesserung wäre durch eine aktive Schwellwertanpassung während des Verlaufs möglich (hier nicht implementiert). %DB106: keine anpassung des schwellwertverlaufs/tresholds an ändernde amplitude; erkennungsfehler besonders im letzten teil in dem amplitude verändert \end{minipage} \end{figure} \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-16-35-29.png} \caption{QRS DB108} \label{qrsdb108} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} Der Datensatz 108 in Abbildung \ref{qrsdb108} zeigt einen Verlauf mit erhöhter T-Welle als gewöhnlich, dies weißt auf einen Herzinfarkt im Stadium 1 hin. Da diese T-Wellen relativ hoch ausschlagen werden diese falsch Positiv erkannt. Der Matlab Algorithmus wurde daraufhin angepasst, indem der Schwellwert von der Hälfte der Amplitude auf das obere fünftel der Amplitude erhöht wurde. Daraufhin war die Detektion beinahe Fehlerfrei mit 2,8\% Fehlerquote, wie in der Abbildung zu erkennen. Insgesamt wurden 2 R-Spitzen nicht erkannt. Es gab keine Falsch-Positiven Detektionen. \end{minipage} \end{figure} \cleardoublepage Der vorgeschlagene Matlab Algorithmus konnte durch Modifikation des Threshold verbessert werden aber passt sich nicht dynamisch verändernden Amplituden an. Mögliche Adaptionen der QRS Erkennung zur verbesserten Detektion: \begin{itemize} \item adaptive Schwellwertanpassung, um R-Spitzen in einer dynamisch ändernden Amplitude weiterhin korrekt zu detektieren \item ein minimaler und maximaler Abstand zwischen R-Spitzen um andere erhöhte Wellen von der Detektion ausschließen zu können \item online Fähigkeit, um die Detektion auch ohne abgeschlossene Aufnahme betreiben zu können (Bsp. EKG Monitor in der Intensivstation) \begin{itemize} \item der Threshold kann hierfür nicht aus dem Gesamtsignal ermittelt werden, stattdessen sollte ein Zeitfenster der vorhergehenden Sekunden betrachtet werden \end{itemize} \item Schwellwert stark erhöhen direkt nach Erkennen einer R-Spitze und langsam senken. Dadurch können pathologische Veränderungen der S-, T- und U-Wellen weniger Einfluss auf die Detektion nehmen. Ein exponentiell abklingender Verlauf würde sich beispielsweise anbieten, da dieser sowohl bei sehr hohem als auch bei niedrigem Puls gute Ergebnisse zu erwarten hat. \end{itemize} \subsection{Analyse der Herzfrequenzvariabilität} \texttt{Analysiere die aufgezeichneten EKG-Signale während der drei Phasen RUHE, RESP und STEH. Interpretiere die Unterschiede in den Ergebnissen der einzelnen Phasen der HRV-Analyse} Due GUI zeigt in der Herzratenvariabilität (HRV) unterschiedliche Diagramme zur Analyse auf. Das Diagramm QRS-Detektion zeigt den Verlauf des verwendeten Datensatzes in blau mit erkannten R-Spitzen in grün. Das Diagramm ,,Herzfrequenz nach Interpolation'' darunter zeigt den zeitlichen Verlauf der Abstände zwischen zwei aufeinanderfolgenden R-Spitzen. Das ,,HF Leistungsspektrum'' zeigt die Wahrscheinlichkeitsdichte unterschiedlicher auftretender Frequenzen über den gesamten Zeitverlauf. Durch Ausprägung markanter Formen können pathologische Veränderungen erkannt werden. Das Scatter- und Phasendiagramm sind weitere Darstellungsformen für die Variabilität. Je weiter verstreut die Punkte, welche die aufeinanderfolgenden Abstände der R-Spitzen darstellen, liegen desto größer ist die HRV. Im gesunden Fall erwarten wir eine elliptische Form des Streudiagramms; andere Ausprägungen können beispielsweise auf Herzrythmusstörungen hinweisen. Das Histogramm ist das letzte Diagramm der GUI. Die gemessenen R-Spitzen-Abstände werden in feste Zeitbereiche gegliedert und als Balken über die prozentuale Häufigkeit des bestimmten Wertes dargestellt. Die Anzahl der Balken ist abhängig von der Variabilität des Probanden. Im gesunden Fall erwarten wir grob die Form einer Gaußkurve. Andere Formen können auf pathologische Veränderungen oder weitere äußere Einflüsse während der Messung (Bsp. starke Atmung) hinweisen. \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-16-59-32.png} \caption{Phase RUHE} \label{phaseruhe} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} In der Ruhephase sitzt und atmet der Proband normal. Das Diagramm nach Interpolation zeigt kleine Amplitudenänderungen bei großer Signalanzahl. Im HF-Leistungsspektrum sind drei markante Spitzen ersichtlich. Diese entsprechen den in der Praktikumsanleitung (S.24) beschriebenen thermoregulatorischen Vorgängen im sehr niederfrequenten (VLF) Bereich, Blutdruckwellen III. Ordnung im niederfrequenten (LF) Bereich und Einflüsse der Atmung im hochfrequenten (HF) Bereich. Der Scatter-Plot und Phasen-Plot zeigen eine gering gestreute Anordnung und eine etwa elliptische Form. Im Histogramm erkennt man die erwartete gaußsche Glockenkurvenform. Die Diagramme zeigen alle die erwarteten und in der Literatur beschriebenen Eigenschaften und weisen auf einen gesunden Probanden hin. %atmiung/atemfrequenz kann einfluss haben , hf %blutdruck hat einfluss, besonders im stehen, lf \end{minipage} \end{figure} \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-17-00-21.png} \caption{Phase RESP} \label{phaseresp} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} In der Respirationsphase sitzt der Proband und atmet langsam tief ein und tief aus. Das Diagramm nach Interpolation zeigt große Amplitudenänderungen. Im Vergleich zum vorhergehenden Datensatz bleibt die Amplitudendifferenz im zeitlichen Verlauf sehr konstant. Im HF-Leistungsspektrum ist eine markante Spitzen im niederfrequenten (LF) Bereich zu sehen. Diese entspricht der erwarteten Ausprägung durch starke Atmung. Jedoch aufgrund der langsamen Atmung in den niederfrequenten (LF) Bereich verschoben. Der Scatter-Plot und Phasen-Plot zeigen eine elliptische Ausprägung bei breitere Streuung der Datenpunkte. Im Histogramm erkennt man zwei ausprägungen der erwarteten Gaußkurven, die einander teilweise überlagern; entsprechend der Ein- und Ausatemphasen. \end{minipage} \end{figure} \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-17-09-35.png} \caption{Phase STEH} \label{phasesteh} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} In der Stehphase steht der Proband und atmet normal. Aus der QRS-Detektion und den Scatter- und Phasenplot ist ein, wahrscheinlich aus einem Bewegungsartefakt resultierender, Ausreißer ersichtlich. Dieser muss hier einmalig manuell im Code behoben werden, indem der Datenpunkt genullt wird. Die korrigierte Detektion ist in Abbildung \ref{phasesteh2} sichtbar und zeigt deutlich, wie ein einzelner Ausreißer die Auswertung verfälschen kann. %ausreißer an position 204 wurde im matlab code genullt %diagramme dadurch korrigiert \end{minipage} \end{figure} \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-17-25-19.png} \caption{Phase STEH Korrigiert} \label{phasesteh2} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} Das Diagramm nach Interpolation zeigt eine hohe Variabilität im Zeitverlauf. Im HF-Leistungsspektrum sind eine Spitze im sehr niederfrequenten (VLF) Bereich erkennbar, sowie eine breite Signaldichte im niederfrequenten (LF) Bereich. Der hochfrequente (HF) Bereich ist weitestgehend frei von Signalen. Im Vergleich zur Ruhephase sehen wir einen höheren Einfluss der sehr niederfrequenten Anteile (z.B. Blutdruck, thermoregulatorische Vorgänge) auf das Gesamtspektrum. Der Scatter-Plot und Phasen-Plot zeigen eine in die Länge gezogene Ellipse mit hoher Dichte. Im Histogramm erkennt man eine Gaußkurve mit wenigen Spitzen in der Mitte. Im Vergleich zur Ruhephase ist die Gaußkurve nach links verschoben, was von der höheren Herzfrequenz herrührt. %frequenz: atmung bildet sich ab, %bewegung %ausreißer, %woher komtm die energie, bltudruck \end{minipage} \end{figure} \cleardoublepage \texttt{Vergleiche die HRV-Ergebnisse des Praktikumsprobanden mit den Ergebnissen eines Polyneuropathie-Patienten.} Polyneuropathie ist eine Gruppe von Erkrankungen, bei der mehrere periphere Nerven geschädigt sind. Bekannte Symptome sind unter anderem Muskelschwäche, Muskelkrämpfe und Lähmungen. Zu beachten ist die verkürzte Laufzeit des Datensatzes in \ref{zwickau} von ~180 Sekunden im Vergleich zu den Standard 300 Sekunden Aufnahmen der Datensätze \ref{phaseruhe}, \ref{phaseresp} und \ref{phasesteh2}. Außerdem ist zu beachten, dass die Amplituden der QRS-Detektion sich sehr stark von den Erwartungen am gesunden Probanden unterscheiden, ob es sich hierbei um eine andere Größenordnung als mV handelt ist aus dem Diagramm nicht ersichtlich. \begin{figure}[ht] \begin{minipage}[t]{0.5\linewidth} \centering \includegraphics[width=0.9\linewidth, valign=t]{Assets/LaborBMT-17-30-09.png} \caption{Polyneuropathie} \label{zwickau} \end{minipage}% \begin{minipage}[t]{0.5\linewidth} Das Diagramm nach Interpolation zeigt eine gleichmäßige Herzrate mit geringer Variabilität. Im HF-Leistungsspektrum sind eine Spitze im sehr niederfrequenten (VLF) Bereich und eine im hochfrequenten (HF) Bereich abzulesen. Dies unterscheidet sich deutlich von gesunden Probanden. Im Phasen-Plot erkennt man eine geringe Verteilung, die auf eine geringe Variabilität zurückzuführen ist. Die Form des Scatter- und Phasen-Plot weißt zudem keine Ellipse auf was auf eine mögliche Herzrythmusstörungen hindeutet. Im Histogramm ist keine Gauß Verteilung sichtbar. Deutlich erkennbar sind hier vorallem Lücken. Auch dies weißt auf eine Herzrythmusstörung hin. %polyneurapathie %woher kommen Auswirkungen %woran erkennt man das %histogram %physiologische und phatologische unterschiede und woran erkennt man das? \end{minipage} \end{figure} Ein Vergleich mit den HRV-Analysen in Abbildungen \ref{phaseruhe}, \ref{phaseresp} und \ref{phasesteh2} zeit deutlich erkennbare Unterschiede auf, die für eine Diagnose des Probanden genutzt werden können. Alle Diagramme in Abbildung \ref{zwickau}zeigen eine sehr kleine Verteilung und Herzfrequenzvariabilität. Die Herzrate ist sehr gleichmäßig. Über die Verteilung im Phasen-Diagramm sind sehr enge R-Spitzen-Abstände zu sehen. Diese deuten ohne Vorwissen der Erkrankung auf ein Problem mit dem Nervensystem hin. Die Ausformung des Histogramms und Scatter-Diagramms weisen zusätzlich auf eine mögliche Herzrythmusstörungen hin. Nach den Spitzen des HF-Leistungsspektrums wurde das EKG vermutlich während der Respirationsphase aufgenommen. \newpage \section{Quellen} \begin{itemize} \item Prof. Dr.-Ing. habil. Peter Husar, Vorlesung ,,Grundlagen der Biosignalverarbeitung'', TU Ilmenau, 2021 \item M.Sc. Marc-Patrick Heppner, Praktikumsanleitung ,,EKG Signalanalyse'', TU Ilmenau, 2021 \item Univ.-Prof. Dr.-Ing. Martin Haardt, Vorlesung ,,Signale und Systeme 1'', TU Ilmenau, 2019 \item \href{https://eleceng.dit.ie/dorran/matlab/resources/Matlab%20Signal%20Processing%20Examples.pdf}{eleceng.dit.ie}, Matlab Beispiele, Abgerufen 11.01.2021 \item \href{https://biomedicalsignalandimage.blogspot.com/2016/02/matlab-code-to-plot-ecg-signal.html}{biomedicalsignalandimage.blogspot.com}, Matlab EKG Beispiel, Abgerufen 11.01.2021 \item \href{https://github.com/Aburas98/MATLAB/}{GitHub.com/Aburas98}, Matlab EKG Beispiele, Abgerufen 04.01.2021 \item \href{https://www.section.io/engineering-education/electrocardiograms-qrs-peak-and-heart-rate-detection-using-dwt-in-matlab/}{section.io}, QRS Detektion Beispiel, Abgerufen 11.01.2021 \item \href{https://de.mathworks.com/help/dsp/ug/real-time-ecg-qrs-detection.html}{Mathworks.com}, EKG Analyse, Abgerufen 04.01.2021 \item \href{https://www.netdoktor.de/krankheiten/polyneuropathie/}{Netdoktor.de}, Polyneuropathie, Abgerufen 25.01.2021 \item Karl Dirk Kammeyer: Digitale Signalverarbeitung. 6. Auflage. Teubner, 2006, ISBN 3-8351-0072-6 \end{itemize} \listoffigures \newpage \section{Anhang: Überarbeiteter Code} \begin{lstlisting}[basicstyle=\scriptsize, language=matlab] function [R_Positionen, Entscheidungssignal, Schwellwertverlauf, Lernphase] = QRS_Detektion (EKG_Signal, fa); size = length(EKG_Signal); % Laenge des Signals % fourier transformation signal = fft(EKG_Signal); % entfernen niedriger freqzenzen anhand Laenge und Rate signal(1 : round(size*5/fa))=0; signal(end - round(size*5/fa) : end)=0; % inverse fourier transformation signal=real(ifft(signal)); % bandpass fuer 5 bis 30 hz signal=bandpass(signal, [5 30], fa); % skalierung des Signals auf skala 1-10 filtersignal=signal/(max(signal)/10); % entfernen aller peaks unterhalb des thresholds 10/2=5 for data = 1:1:length(filtersignal) if filtersignal(data) < 5 filtersignal(data) = 0; else filtersignal(data)=1; end end % finde alle uebrigen peaks, die ueber dem threshold lagen positions=find(filtersignal); % abstand der ersten beiden peaks distance=positions(2)-positions(1); % setzte den abstand auf das minimum zweier peaks in der reihe aller uebrigen peaks for data=1:1:length(positions)-1 if positions(data+1)-positions(data)