LabVIEWForum.de - "dynamischen" Offset aus Signal entfernen

LabVIEWForum.de

Normale Version: "dynamischen" Offset aus Signal entfernen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin,

ich habe das Problem, dass ich als Signalverlauf eine Art Sinus habe, dessen Offset aber stark variiert.
Da ich das Frequenzspektrum bestimmen möchte, hätte ich diesen Offset gerne entfernt.
Stückweise einlesen und dann jeweils für dieses Stück den Offset per entsprechender VI zu entfernen funktioniert zwar, ergibt an den Schnittstellen aber hässliche Sprünge.

Was mit noch weiter einfallen würde, wäre die Maxima der Ableitung zu bestimmen, den y-Wert zu verwerfen und diese als die Stützstellen für ein Polynom zu verwenden.
Klingt das plausibel?
Wenn ja, wie stelle ich das in Matlab an?
Oder könnte ich gar den Abstand der Maxima zur Generation eines normalisierten Polynoms verwenden?
Wenn ja, stellt sich mir wieder die Frage, wie ich das in Matlab anstelle.

Zur Visualisierung habe ich eine Skizze angehängt, man verzeihe mir meine Mauszeichenfertigkeiten.

Gruß
herrhannes
So ich habe jetzt meinen ersten Versuch angehängt.

Ich bestimme die Peaks des Signals und approximiere sie dann. So war das zumindest mein Vorhaben.
Das Schieberegister dient dazu, die Amplituden zur normalisieren, sprich abwechselnd positiv und negativ.
Aber wieso zum Teufel gibt Labview das Polynom als Array ohne Abstand der Stützstellen aus?
Das ist ja vollkommen bescheuert...[attachment=40373][attachment=40374]
Hi,

wäre es nicht viel nachvollziehbarer, Dein Eingangssignal Hochpass zu filtern? (Ich interpretier jetzt mal "dynamischen Offset" als "sich im Vergleich zum Nutzsignal langsam verändernde Störgröße", ergo Drift.)

Entweder weißt Du, welche Frequenzen du ungefähr erwartest, dann kannst du die Grenzfrequenz direkt festlegen oder du probierst ein bisschen mit Grenzfrequenz und Filtercharakteristik aus, hast aber eine nachvollziehbare Operation auf Deinen Signalverlauf angewendet...

Grüße,

ch
Nein, das geht leider nicht.
Das Signal ist quasi der Wert einer sich ändernden Impedanz über die Zeit aufgetragen.
Und diese Änderungen sind nicht immer gleich groß.

Edit:

Ich habe es jetzt mit einer Spline-Interpolation versucht, was für einen fast-Sinus ja am passendsten sein dürfte.
Nun habe ich ein Array mit den x-Werten und eines mit den y-Werten. Wie bekomme ich das zu einer Waveform kombiniert?
Die x-Werte entsprechen ja der relativen Zeit.
Hi,

Waveforms brauchen eine feste Samplerate. Also musst Du vermutlich erstmal ein Resampling machen, damit du eine Waveform erstellen kannst (die eigentlich nur ein Cluster aus Start-Zeitstempel, Abtastintervall und dem Array der Y-Werte ist).

Schreib doch mal, was Deine eigentliche Aufgabe ist...Impedanzen mess ich auch jeden Tag...

Grüße,

ch
Mein Ziel ist es einfach, ein Atemsignal zu analysieren. Je nachdem, wie der entsprechende Brustgurt gerade sitzt, verändert sich der beschriebene Offset.
Dieser entsteht aber erst bei der softwareseitigen Filterung.

Am Ende sollte ein schönes Signal herauskommen, das FFT-transformiert werden kann, um einen Überblick über die Atemfrequenzen usw. zu haben.
Am besten sollte das natürlich dann automatisch passieren können, da ist es natürlich wenig hilfreich, wenn ich vor allem einen riesigen peak bei 0Hz habe.
Referenz-URLs