Ich habe ein Signal, das ich bei 500 kHz abtaste. Ich versuche, einen Anstieg, Abfall und die Spitze in den eingehenden Daten zu erkennen. Die Basis des Peaks könnte 250 usec oder 2,5 ms betragen, die Amplitude könnte 6 dB oder 15 dB über dem Grundrauschen liegen. Ich habe leider keinen guten snr. Der Gleichstrompegel des Signals ist nicht konstant, sondern bewegt sich viel langsamer als die Wechselstromkomponente.
Am Entscheidungspunkt muss ich die Steigung des Anstiegs und Abfalls kennen. Dies ist ein hartes Echtzeitsystem, und ich muss im 100usec wirklich eine Entscheidung treffen, nachdem die Abwärtsneigung das Gleichstromniveau erreicht hat.
Ich suche nach Vorschlägen, wie ich einen anständigen Algorithmus effizient implementieren kann.
Derzeit mache ich einen laufenden Durchschnitt (über 25 Datenpunkte addiert) und versuche, den Trend zu erkennen. Sobald ich den Trend nach oben erkenne, suche ich nach dem Trend nach unten und wenn ich das tue, sammle ich vielleicht weitere 50 Proben und beginne zu berechnen.
Rauschen schraubt diesen Algorithmus jetzt leicht, daher die Frage.
Aktualisieren
Zum Wohle anderer habe ich am Ende einen gleitenden Durchschnitt gefolgt von einem Integrator implementiert. Der gleitende Durchschnitt der letzten 64 Daten wurde ausreichend geglättet, verlor jedoch bis zu einem gewissen Grad an. Durch die Integration der letzten 8 Werte wurde der Anstieg zurückgewonnen, und ich suche einfach nach Anstieg und Abfall. Später führte ich eine lineare Regression für die Steigung durch. Funktioniert ok, nicht großartig, aber ok.