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.
quelle
Antworten:
Sie sollten mit einem bandbegrenzten Differenzierer beginnen (entspricht einem Differenzierer, gefolgt von einem Tiefpassfilter). Das Unterscheidungsmerkmal entfernt den Niederfrequenztrend und reagiert scharf auf Ihre Spitzen und Steigungen. Die Tiefpasskomponente entfernt Rauschen über die Grenzfrequenz hinaus.
Sie sollten Ihre Grenzfrequenz so gestalten, dass Sie saubere Impulse für Ihre Steigungen erhalten.
Positive Steigungen verlangsamen sich als positive Impulse; negative Steigungen als negative Impulse, und die Spitze entspricht dem Nulldurchgang zwischen positiv und negativ.
Dieser Filtertyp wird normalerweise als FIR-Filter implementiert. Die Anzahl der Abtastwerte für Ihren Filter hängt dann von Ihren Echtzeitbeschränkungen, der Schärfe bei der Grenzfrequenz und der Grenzfrequenz selbst ab.
quelle