Signale / Funktionswerte bearbeiten



  • Hallo, ich bekomme von einem Messgerät in periodischen Zeitabständen Signale.
    Diese stehen für Kraftwerte, die auf eine Materialprobe angewandt werden.

    Idealerweise sollten alle Punkte auf einer Sinus-artigen Kurve liegen, da eine ständige Be- und Entlsatung stattfindet. Nur leider geben manche Materialproben nach längerer Belastung nach und es kommt zu Abweichungen von der Sinusschwingung, welche zu untersuchen sind. Außerdem sind natürlich alle Daten leicht fehlerbehaftet.

    Was mich vor allem interessiert, sind die Extremwerte der Schwingungen.
    Diese möchte ich gerne bestimmen. Bisher verwende ich dafür ein ganz einfaches Verfahren: Ich betrachte stets 3 Punkte und teste, ob es sich bei dem mittlerem um ein Extremum handelt. Das klappt aufgrund der hohen Abstastrate ziemlich gut, nur leider kommt es in Ausnahmefällen dazu, dass es leichte Schwingungen/Schwankungen im Kurvenverlauf gibt, so dass ich Maxima und Minima fälschlicherweise bestimme.

    Nun ist meine Frage, wie ich Maxima und Minima von Sinusartigen Messwerten am besten bestimmen kann. Dabei kenne ich weder Frequenz der Schwingung noch die zu erwartende Amplitude. Weiterhin ist es wichtig zu verstehen, dass sich die Maxima der Wellen verändern, wenn die Probe Mängel aufweist (es ist davon auszugehen, dass die Maxima im Verlaufe einer langen Messung in unbekanntem Maße abnehmen).

    Was ich also gerne hätte am Schluss: Eine Möglichkeit, meine "Kurven" zu glätten, um falsche Extrema auszuschließen und einen Algorithmus, der mir erfolgreich die Extremwerte der Kurven bestimmt.


  • Mod

    Ganz konkrete Hilfestellung kann man ohne exakte Kenntnis des Problems nicht geben, aber allgemein ist die Vorgehensweise, dass du eben möglichst viele Messwerte in das Ergebnis einfließen lassen solltest und nicht nur jeweils drei auf einmal. Also beispielsweise eine Sinuskurve an dein Signal fitten.



  • Was ich also gerne hätte am Schluss: Eine Möglichkeit, meine "Kurven" zu glätten, um falsche Extrema auszuschließen und einen Algorithmus, der mir erfolgreich die Extremwerte der Kurven bestimmt.

    du kannst das Signal tiefpassfiltern (z.B. Signal mit Gaußfunktion falten) und in diesem Signal dann die x-Werte der Extremwerte bestimmen. Mit diesen x-Werten gehst du zurück ins Originalsignal und holst dir dort den tatsächlichen y-Wert.



  • Wie SeppJ schon gesagt hat ist es schwer einen Vorschlag zu geben wenn das (ungefähre) aussehen der Funktion unbekannt ist.

    Eine Möglichkeit, meine "Kurven" zu glätten, um falsche Extrema auszuschließen

    Hier gibt es eine Vielzahl von Möglichkeiten und es kommt darauf an wie die "falschen" Extrema aussehen. Handelt es sich um "Spratzer" könnten diese recht elegant mit einer Median-Glättung entfernt werden.
    Dazu ersetzt du jeden Punkt Xi durch den Median von Xi-n .. Xi+n (n bestimmt so die "Reichweite" der Glättung). Bedenke dass dein Signal so an jeder Stelle verändert wird (wie bei jeder Glättung).

    und einen Algorithmus, der mir erfolgreich die Extremwerte der Kurven bestimmt

    Falls es dir hilft die "Hüllkuve" deiner Funktion zu kennen (z.B. weil du weist zu welchem Zeitpunkt ein Extrema vorliegt) könntest du diese sehr einfach bestimmen indem du:
    1. Eine FFT vom Signal machst.
    2. Das Ergebnis mit i (imaginäre Zahl, i^2 = -1) multiplizierst.
    3. Das Produkt einer inversen FFT unterziehst.

    Wichtig hierbei:
    - mit den komplexen Zahlen rechnen, nicht mit den Beträgen.
    - keine Fensterung durchführen.


Log in to reply