|
|
Signale von Trends befreien |
|
emre5494 |
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 13.12.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.12.2021, 16:00
Titel: Signale von Trends befreien
|
|
Guten Tag,
ich habe im Rahmen einer Spirometrie (Lungenfunktionsdiagnose) folgende Zeit-Volumen Kurve die ich laut Aufgabenstellungen "von etwaigen Trends befreien soll, so dass die Start- und Endpunkte auf einem Punkt liegen".
Ich habe mich bereits etwas durchgelesen und bin auf den "detrend" befehl gestoßen, allerdings liegen die Start- und Endpunkte auch danach nicht auf dem selben Punkt.
Daher weiß ich leider nicht wie ich weiter vorgehen sollte.
Des weiteren habe ich eine ähnliche Aufgabenstellung wo ich einzelne Atemzüge segmentieren soll und diese dann als eine überlagerte Fluss-Volumen-Kurve darstellen soll, dabei sollen die Atemzüge auch von etwaigen Trends befreit werde, sodass die Start- und Endpunkte jedes Atemzyklus auf einem Punkt liegen.
Leider habe ich da echt keine Ahnung wie ich vorgehen soll.
Ich hoffe ihr könnt mir hier weiter helfe.
Gruß
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.12.2021, 10:00
Titel:
|
|
|
|
|
Hallo,
Zitat: |
von etwaigen Trends befreien soll, so dass die Start- und Endpunkte auf einem Punkt liegen |
Ist das denn sinnvoll, wenn das Signal mit einem Tiefpunkt startet und mit einem Hochpunkt endet?
So oder so: aus der Doku von detrend geht ja klar hervor, dass die Funktion nicht dafür sorgt, dass Start- und Endpunkte auf dem selben Punkt liegen. Dann brauchst du also entweder eine andere Funktion oder musst dir selbst eine schreiben:
1. Punkte identifizieren.
2. Gerade durchlegen (polyfit)
3. Gerade auswerten und abziehen (polyval)
Bei den unteren beiden Bildern ist mir der Zusammenhang nicht klar. Wie soll aus etwas rauschfreiem etwas verrauschtes werden?!
Bitte auch bedenken, dass sich hier sehr wahrscheinlich niemand befindet, der sich mit deiner speziellen Anwendung auskennt - und somit nichts mit Begriffen wie "überlagerte Fluss-Volumen-Kurve" anfangen kann.
Grüße,
Harald
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
emre5494 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 13.12.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.12.2021, 15:33
Titel:
|
|
|
|
|
Hallo,
erstmal Danke für dein Antwort.
also die beiden messungen unten stehen soweit im zusammenhang, dass das messgerät zunächst nur den Atemfluss erfassen kann.
Durch numerische Integration (integrator eingebaut im Messgerät) kann dann durch den atemfluss das atemvolumen erfasst werden.
ich könnte mir vorstellen das während dieses Prozesses das Signal dann gleichzeitig gefiltert/geglättet wird, weswegen nur das ursprüngliche Signal Rauschverhältnisse aufweist.
Zu den Atemzyklen kann ich sagen, dass jede positive steigung der Inspiration (einatumung) und jede negative Steigung der Exspiration (ausatmung) entspricht,
demnach steht jeder Hochpunkt im Signal für ein Atemzyklus, welche es nun zu separieren gilt.
Das Fluss-Volumen-Diagramm stellt dann Die Atemfluss änderungen über das Atemvolumen da. Es sollte ungefähr wie folgt aussehen:
Dabei steht jeder Bogen unterhalb von 0 auf der x-Achse für die Einatmung und jeder Bogen überhalb von 0 für die Ausatmung.
Man kann sich also vorstellen wenn die Atmung periodisch immer gleich wäre wie ein Sinus hätte man in dem Diagram ein sich ständig wiederholenden Kreis.
Aber wie gesagt mein eigentlich problem jetzt ist es Die atemzyklen zu separiere und sie dann so zu Überlagern das die Start- und Endpunkte bei Null liegen.
Ich habe aus vergangen Semester ein Beispiel dafür anhand eines EKG-Signals wie es aussehen müsste, aber leider ohne Programmcode an dem ich mich orientieren könnte.
Ich hoffe ihr könnt mir dabei irgendwie behilflich sein.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.12.2021, 16:25
Titel:
|
|
Hallo,
hast du denn die bisherige Anregung ausprobiert?
Wie trennt man denn zwei Atemzüge in dem Signal? Anders gefragt: was trennt Ende eines Atemzugs vom Beginn des nächsten? Falls es lokale Minima sind:
islocalmin
.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
emre5494 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 13.12.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.12.2021, 17:00
Titel:
|
|
Hallo,
ich muss mich korrigieren, jede negative steigung entspricht dem einatmen und jede positive steigung dem ausatmen also ja der zeitliche abstand zu jedem lokalen minimum enspricht einem atemzyklus.
wie kann ich diese nun überlagert darstellen ?
und noch eine andere frage, wie könnte ich bei einer abtastfrequenz von 2kHZ das signalrauschen entfernen ?
Gruß,
Emre
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.12.2021, 17:17
Titel:
|
|
Hallo,
die Signale voneinander trennen (eben mit islocalmin) und dann die Teilstücke extrahieren, dann plotten. Mehr lässt sich ohne Beispieldatensatz nicht wirklich dazu sagen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
emre5494 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 13.12.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.12.2021, 18:12
Titel:
|
|
okay also wie ich die Atemzyklen bestimme ist mir klar, aber wie genau würde man die jetzt die Teilstücke extrahieren ?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.12.2021, 20:51
Titel:
|
|
Hallo,
dann schreib doch mal den entsprechenden Code hin.
Wenn du die Startstellen eines (neuen) Teilstücks ermittelt hast, ist unter der Annahme von Zeilenvektoren
und darüber kannst du dann z.B. eine for-Schleife über
x(start(k):ende(k))
laufen lassen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
emre5494 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 13.12.21
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.12.2021, 21:38
Titel:
|
|
[Y,X] = findpeaks(RegularB_volumen, 'minPeakDistance', 6000);
figure;
for i = 1:length(X)-1
start = X(i);
Abstand_Index = X(i+1)-X(i);
ende = start + Abstand_Index;
Trend = linspace(RegularB_volumen(start), RegularB_volumen(ende),Abstand_Index)';
detrend_vol = RegularB_volumen(start:ende-1)-Trend;
Trend = linspace(RegularB_flow(start), RegularB_flow(ende),Abstand_Index)';
detrend_flow = RegularB_flow(start:ende-1)-Trend;
plot(detrend_vol,detrend_flow);
title('Regular Breathing Fluss-Volumen-Kurve');
xlabel('Volumen in L');
ylabel('Flow in L/s');
grid on;
hold on
end
hab es mal so versucht, so liegt der Start- und Endpunkt jedes Zyklus bei 0.
Noch eine Idee wie ich das Rauschen aus dem Atemfluss entfernen kann ?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.12.2021, 21:49
Titel:
|
|
Hallo,
z.B. mit
smoothdata
.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|