Plotten von unterschiedlichen Signalen gegeneinander
Verfasst: Donnerstag 11. Mai 2017, 19:09
Hallo,
ich bin schon länger mit Python im wissenschaftlichen Bereich unterwegs, komme aber bei folgendem Problem weder zu einer sinnvollen noch zu einer funktionierenden Lösung.
Aus einer Messung mit zwei unterschiedlichen Geräten habe ich zwei x-y Datensätze.
x1 = Zeit in min.
x2 = Zeit in sec.
y1 = Signal1
y2 = Signal2
Leider haben die beiden Messgeräte unterschiedliche Sampling-Raten die zusätzlich auch nicht konstant sind. Signal1 ist stetig und hat einen unspektakulären Verlauf. Signal2 hingegen ist unstetig und sieht einem Sägezahn-Profil ähnlich:
Des Weiteren sind beide Signale zwar jeweils ein zusammenhängender Datensatz, allerdings muss ich diese an bestimmten Punkten auftrennen. Und zwar so, dass ich je einen Sägezahn einzeln habe. Signal1 muss dann an den gleichen Stellen getrennt werden.
Mein Ziel ist letztlich ein Plot: y: Signal1, x: Signal2 für jedes Sägezahnsegment zu erhalten. Leider gestaltet sich dies, aufgrund der unterschiedlichen Sampling-Raten schwierig.
Bisher habe ich versucht mit scipy.interpolate (linear) ein resampling der beiden Signale durchzuführen. Prinzipiell funktioniert das zwar, aber die Grenzen beim Trennen der Signalsegmente leiden durch die Interpolation.
Da die Zeitsignale keine Integer, sondern Floats mit einigen Dezimalstellen sind, kann ich die Segmente auch schlecht mittels der jeweiligen Zeitwerte trennen, da ich die Grenzen nicht exakt zuordnen kann. Wenn ich die Zeiten runde und einen kleinen Shift in kauf nehme, dann zieht mir das resampling, wegen der Interpolation, mein Signal in unsinnige Bereiche (der Fuß des Sägezahn wird z.B. < 0). Ich bräuchte eine Interpolationsmethode zum resampling die den Start- und Endpunkt exakt beibehält.
Kann mir jemand einen Tipp geben, wie ich so etwas bewerkstelligen kann?
Vielen Dank!
zweihorn
ich bin schon länger mit Python im wissenschaftlichen Bereich unterwegs, komme aber bei folgendem Problem weder zu einer sinnvollen noch zu einer funktionierenden Lösung.
Aus einer Messung mit zwei unterschiedlichen Geräten habe ich zwei x-y Datensätze.
x1 = Zeit in min.
x2 = Zeit in sec.
y1 = Signal1
y2 = Signal2
Leider haben die beiden Messgeräte unterschiedliche Sampling-Raten die zusätzlich auch nicht konstant sind. Signal1 ist stetig und hat einen unspektakulären Verlauf. Signal2 hingegen ist unstetig und sieht einem Sägezahn-Profil ähnlich:
Code: Alles auswählen
__ __
/ | /
/ |/
Mein Ziel ist letztlich ein Plot: y: Signal1, x: Signal2 für jedes Sägezahnsegment zu erhalten. Leider gestaltet sich dies, aufgrund der unterschiedlichen Sampling-Raten schwierig.
Bisher habe ich versucht mit scipy.interpolate (linear) ein resampling der beiden Signale durchzuführen. Prinzipiell funktioniert das zwar, aber die Grenzen beim Trennen der Signalsegmente leiden durch die Interpolation.
Da die Zeitsignale keine Integer, sondern Floats mit einigen Dezimalstellen sind, kann ich die Segmente auch schlecht mittels der jeweiligen Zeitwerte trennen, da ich die Grenzen nicht exakt zuordnen kann. Wenn ich die Zeiten runde und einen kleinen Shift in kauf nehme, dann zieht mir das resampling, wegen der Interpolation, mein Signal in unsinnige Bereiche (der Fuß des Sägezahn wird z.B. < 0). Ich bräuchte eine Interpolationsmethode zum resampling die den Start- und Endpunkt exakt beibehält.
Kann mir jemand einen Tipp geben, wie ich so etwas bewerkstelligen kann?
Vielen Dank!
zweihorn