Signalverarbeitungstechniken für ein Beschleunigungsmessersignal?

7

Ich führe einige Tests durch, bei denen ich Beschleunigungsmessermessungen aufzeichne. Ich möchte Elemente der Signalverarbeitung für dieses Signal verwenden, bin mir jedoch nicht sicher, wo ich anfangen soll oder wie ich vorgehen soll.

Mein oberstes Ziel ist es, die Beschleunigungswerte in Echtzeit überwachen und dann eine Benachrichtigung anzeigen zu können, wenn dies eventauftritt. Wie Sie um die 150.000 Abtastzeit sehen können, eventtritt ein auf.

  • Wenn ich diese Daten in Echtzeit überwache, welche Art von Signalverarbeitungstechniken könnten implementiert werden, um auf dieses Ereignis zu reagieren?
  • Wäre eine Kurzzeit-Fourier-Transformation (STFT) eine Option?

Ich überwache meine Daten in Python und sie haben eine anständige STFT-Funktion .

Die Argumente dieser Funktion lauten wie folgt:

scipy.signal.stft (x, fs = 1.0, window = 'hann', nperseg = 256, noverlap = None, nfft = None, 
detrend = False, return_onesided = True, border = 'Nullen', aufgefüllt = True, axis = -1)
  • Wie bestimme ich optimale Parameter für die Verarbeitung dieses Signals?

  • Gibt es andere Methoden, von denen Sie glauben, dass sie mir helfen könnten, festzustellen, wann sie eventin Echtzeit auftreten (anstatt nur die Größe der Beschleunigung zu verwenden)?

https://dsp.stackexchange.com/users Geben Sie hier die Bildbeschreibung ein

EDIT 1:

Mein STFT wurde oben hinzugefügt.

Gary
quelle

Antworten:

5

Ich frage mich, warum die STFT herausspringt. Wäre für mich eine einfache Schwelle für das Signal selbst oder für seine Hüllkurve nach Entfernen des gOffsets nicht besser / genauso gut ?

Sobald Sie entschieden haben, welche "Maßnahme" am besten geeignet ist, um Ihre zu erkennen event, können Sie die Arbeit von Basseville und Nikiforov anwenden, die ich hier beantwortet habe.

Die klassische Referenz für dieses Problem ist die Erkennung abrupter Änderungen - Theorie und Anwendung durch Basseville und Nikiforov. Das ganze Buch steht als PDF-Download zur Verfügung .

Meine Empfehlung ist, dass Sie Kapitel 2.2 über den CUSUM-Algorithmus (kumulative Summe) lesen .

Peter K.
quelle
Vielen Dank für Ihren Kommentar! Ich habe oben ein Foto der STFT-Ausgabe hinzugefügt. Jetzt habe ich einfach die STFT-Funktion ausgeführt, ohne viel über die Funktionsparameter nachzudenken. Meine Beschleunigung wird bei einer Abtastfrequenz von 500 Hz erfasst. Kann ich das verwenden, um meine Methoden zu unterstützen?
Gary
2
@ Gary Danke, dass du die Handlung hinzugefügt hast. Ich betrachte die auftretenden Hochfrequenzadditionen, aber ich denke immer noch, dass die Zunahme der Amplitude leichter eventzu erfassen ist - vorausgesetzt, sie erfasst alle Versionen von Ihnen , die Sie erkennen möchten. In der Antwort von Fat32 finden Sie ein Beispiel dafür, wovon ich spreche.
Peter K.
Hey Peter, wie interpretierst du die STFT-Handlung und formulierst sie in Laienbegriffe? Meine Frequenz liegt auf der y-Achse und die Zeit auf der x-Achse. Was kann ich also über die Häufigkeit sagen, die zum Zeitpunkt 2.0 auftritt?
Gary
@ Gary: Es gibt zwei Dinge für mich: a) das Auftreten von harmonischen Inhalten (Subharmonik bis zum Hauptpeak vor dieser Zeit) und b) einige weit verbreitete, nicht harmonische Hochfrequenzgeräusche. Ich würde versuchen, diesen hochfrequenten Inhalt herauszufiltern und ihn zu verwenden, um festzustellen, ob er zur Identifizierung Ihres Inhalts beiträgt event.
Peter K.
Die STFT fällt Ihnen ein, weil Sie damit einen CFAR-Empfänger entwickeln können, wenn der Hintergrund stationäre Töne aufweist
5

Wenn diese Grafik das typischste Anwendungsszenario darstellt, würde ich eine einfache Schätzung der kurzen Fenstervarianz vornehmen und anschließend eine Schwellenwertbildung durchführen.

σx2=1N.n=0N.- -1xeinc[n]]2

Wo xeinc[n]]ist das DC-entfernte Eingangssignal; dhxeinc[n]]=x[n]]- -x¯[n]] wo x¯[n]] ist der DC (Mittelwert) des Eingangs x[n]] die lokal geschätzt werden kann durch

x¯[n]]=1N.n=0N.- -1x[n]]
Sie können auch einen DC-Blocking-Notch-Filter verwenden, um DC-Anhaftungen zu vermeiden, anstatt sie zu schätzen.

Wählen Sie eine ausreichend kleine Fenstergröße N.passend für Ihre Bewerbung. Sie können die Entscheidung des Ereignisses basierend auf einem Vergleich der Standardabweichung (Quadratwurzel dieser berechneten Varianzschätzung) mit einem richtig ausgewählten Schwellenwert durchführen.

Dies lässt sich im Vergleich zu einer Frequenzbereichsanalyse leicht in Echtzeit mit viel weniger Rechenaufwand berechnen. Beachten Sie, dass in der Echtzeitanwendung Ihre Summierungsindizes von der aktuellen Stichprobe rückwärts gehen sollten (anstelle der obigen Formeln, die eine nicht kausale Summierung verwenden).

Als zweite effiziente Alternative können Sie auch eine Erkennung der Zeitbereichshüllkurve (gefolgt von einem Schwellenwert) implementieren , um das Ereignis auszulösen.

Fat32
quelle
„Kurze Fenster Varianz “ ist korrekt, das heißtx[n]] in deiner Formel sollte eigentlich bedeuten x[n]]- -x¯. Oder mehr oder weniger äquivalent könnte das Signal vor der weiteren Verarbeitung hochpassgefiltert werden.
links um den
@leftaroundabout Was ist die beste Methode zur Bestimmung der Grenzfrequenz, für die mein HPF erstellt werden soll?
Gary
@leftaroundabout der Absatz unter der Formel besagt das tatsächlich, aber ich denke, es ist in der ausführlichen verloren. Es scheint also, dass ich es klarstellen muss.
Fat32
@ Gary was HPF ist das? Wo wirst du es verwenden?
Fat32
@ Fat32 Sorry, ich habe gerade deinen bearbeiteten Kommentar durchgelesen. Ich mag Ihren Vorschlag zur Erkennung von Zeitbereichshüllkurven. Ich werde diese Option untersuchen.
Gary