Ich habe ein Signal, dass ich bei 500khz Probe. Ich versuche, einen Anstieg, Abfall und die Spitze in den eingehenden Daten zu erkennen. Die Basis des Peaks könnte für 250 usec oder 2,5 msec sein, die Amplitude könnte 6db oder 15db über dem Noise Floor sein. Ich habe nicht gute snr leider. Der DC-Pegel des Signals ist nicht konstant, sondern bewegt sich viel langsamer als die AC-Komponente. Am Entscheidungspunkt muss ich die Steigung des Anstiegs und des Sinkens kennen. Dies ist ein hartes Echtzeit-System und ich muss wirklich eine Entscheidung im 100usec treffen, nachdem die Abwärtssteigung bis zum DC-Niveau erreicht ist. Ich bin auf der Suche nach Anregungen, wie kann ich effizient implementieren einen Algorithmus, der anständig ist. Derzeit habe ich einen laufenden Durchschnitt (letzten 25 Datenpunkte hinzugefügt) und versuchen, den Trend zu erkennen. Sobald ich den Trend nach oben entdecke, beginne ich, den Trend nach unten zu suchen, und sobald ich das mache, sammle ich vielleicht noch 50 Proben und beginne zu berechnen. Noise jetzt leicht schrauben diesen Algorithmus, daher die Frage. Zum Wohle der anderen, habe ich am Ende Umsetzung eines Moving Average gefolgt von Integrator. Gleitender Durchschnitt der vergangenen 64 Daten geglättet genug, aber verlorenen Anstieg zu einem Grad, die Integration der letzten 8 Werte gewonnen den Anstieg und ich suche einfach für Aufstieg und Fall, später habe ich eine lineare Regression für die Steigung. Funktioniert ok, nicht groß, aber ok. Gefragt Jul 7 12 at 8:01 Ich bin nicht sehr gut mit DSP versiert. Können Sie mich auf eine mögliche Implementierung verweisen? Auf der Grundlage Ihrer Antwort und meiner begrenzten Kenntnisse, denke ich, dass der Link (holoborodko / pavel / numerical-Methoden / numerisch-derivativzwnj8203e / hellip) genau das, was Sie erwähnen. Wenn ich einen solchen Ansatz verwenden würde, weiß ich nicht 1) Wie kann ich meine Frequenzen bestimmen 2) Wie wählt man Filterkoeffizienten aus ndash Ktuncer Auch der folgende Link löst ein ähnliches Problem und enthält viele Links . Dsprelated / showmessage / 123740 / 1.php ndash Ktuncer Ihre Antwort 2016 Stack Exchange, IncUpdate: Der beste Performance-Algorithmus so weit ist dieser. Diese Frage untersucht robuste Algorithmen zur Erkennung plötzlicher Peaks in Echtzeit-Zeitreihen-Daten. Betrachten Sie den folgenden Datensatz: (Matlab-Format, aber es geht nicht um die Sprache, sondern um den Algorithmus) Sie können deutlich sehen, dass es drei große Gipfel und einige kleine Gipfel gibt. Dieser Dataset ist ein spezifisches Beispiel für die Klasse von Zeitreihe-Datasets, über die die Frage geht. Diese Klasse von Datensätzen hat zwei allgemeine Merkmale: Es gibt grundlegende Rauschen mit einem allgemeinen Mittel Es gibt große Spitzen oder höhere Datenpunkte, die deutlich von dem Rauschen abweichen. Wir können auch annehmen, dass die Breite der Peaks nicht vorher bestimmt werden kann, die Höhe der Peaks deutlich von den anderen Werten abweicht, die der verwendete Algorithmus in Echtzeit berechnen muss (so ändern Sie sich mit jedem neuen Datenpunkt). Für eine solche Situation braucht ein Grenzwert Die Signale auslöst. Der Grenzwert kann jedoch nicht statisch sein und muss in Echtzeit auf der Basis eines Algorithmus bestimmt werden. Meine Frage: was ist ein guter Algorithmus zur Berechnung solcher Schwellen in Echtzeit Gibt es spezielle Algorithmen für solche Situationen Was sind die bekanntesten Algorithmen Robust Algorithmen oder nützliche Einsichten sind alle sehr geschätzt. (Kann in einer beliebigen Sprache Antwort: seine über den Algorithmus) Ich habe dies zu tun, um eine abrupte Änderung der Lichtintensität auf einem Photosensor zu erkennen. Ich tat dies durch gleitende Durchschnitt, und ignorieren alle Datenpunkte, die größer als ein Schwellenwert ist. Es ist zu beachten, dass diese Schwelle sich von der einen Spitzenwert bestimmenden Schwelle unterscheidet. Also, sagen Sie nur Datenpunkte, die innerhalb eines stddev zu Ihrem gleitenden Durchschnitt ist, und betrachten diese Datenpunkte mit mehr als drei Stddev als Peaks. Dieser Algorithmus hat sehr gut für unseren Kontext der Anwendung dieser Zeit. Ndash justhalf Ah, ich verstehe. Ich erwartete es nicht in der Code-Form. Wenn ich diese Frage früher schon früher gesehen hätte, würdest du diese Antwort viel schneller bekommen. Jedenfalls war meine Bewerbung diese Zeit, um festzustellen, ob der Photosensor von der Umgebungslichtquelle behindert ist (deshalb benötigen wir den gleitenden Durchschnitt, da das Umgebungslicht Quelle kann allmählich im Laufe der Zeit ändern). Wir haben dies als ein Spiel, wo Sie Ihre Hand über die Sensoren nach bestimmten Muster schweben sollte erstellt. D ndash justhalf Smoothed z-Score algo (sehr robust Schwellenwert Algorithmus) Ich habe einen Algorithmus, der sehr gut funktioniert für diese Arten von Datensätzen konstruiert. Es beruht auf dem Prinzip der Dispersion. Wenn ein neuer Datenpunkt eine gegebene x-Zahl von Standardabweichungen von einem bewegten Mittelwert entfernt ist, die Algorithmussignale (auch als z-Wert bezeichnet). Der Algorithmus ist sehr robust, da er einen separaten Bewegungsmechanismus und eine Abweichung konstruiert, so dass Signale den Schwellenwert nicht verfälschen. Zukünftige Signale werden daher mit ungefähr der gleichen Genauigkeit identifiziert, ungeachtet der Menge der vorhergehenden Signale. Der Algorithmus nimmt 3 Eingänge: Lag die Verzögerung des sich bewegenden Fensters. Schwelle die z-Wertung, bei der der Algorithmus den Einfluss (zwischen 0 und 1) neuer Signale auf den Mittelwert und die Standardabweichung signalisiert und beeinflusst. Zum Beispiel wird eine Verzögerung von 5 die letzten 5 Beobachtungen verwenden, um die Daten zu glätten. Eine Schwelle von 3,5 wird signalisieren, wenn ein Datenpunkt 3,5 Standardabweichungen von dem bewegten Mittelwert entfernt ist. Und ein Einfluss von 0,5 gibt Signale die Hälfte des Einflusses, dass normale Datenpunkte haben. Ebenso ignoriert ein Einfluss von 0 die Signale vollständig für die Neuberechnung der neuen Schwelle: Ein Einfluss von 0 ist daher die robusteste Option 1 am wenigsten. Es funktioniert wie folgt: Der Matlab-Code für diese Demo finden Sie am Ende dieser Antwort. Um das Demo zu verwenden, führen Sie es einfach aus und erstellen Sie eine Zeitreihe selbst, indem Sie auf das obere Diagramm klicken. Der Algorithmus beginnt nach der Verzögerung der Beobachtungen zu arbeiten. Anhang 1: Matlab - und R-Code für den Algorithmus Dieser Code (beide Sprachen) ergibt für die Daten der ursprünglichen Frage folgendes Ergebnis: Anhang 2: Matlab-Demonstrationscode (klicken, um Daten zu erzeugen) Der obige Code wurde so geschrieben Den Algorithmus neu berechnen. Natürlich könnte man auch leicht den Code so ändern, dass die gefiltertY. AvgFilter und stdFilter werden gespeichert, und die Werte werden einfach aktualisiert, wenn neue Informationen ankommen (dies macht auch den Algorithmus viel schneller). Für Demonstrationszwecke habe ich beschlossen, den gesamten Code in einer einzigen Funktion zusammenzustellen. Wenn Sie diese Funktion irgendwo, bitte geben Sie mir oder diese Antwort. Wenn Sie Fragen zu diesem Algorithmus haben, posten Sie sie in den Kommentaren unten oder erreichen Sie mich auf LinkedIn. (Y (t) y (t-1)) ampamp (y (t) y (t1)) Es ist ein Ansatz, um Peaks auf der Grundlage der folgenden Beobachtung zu erkennen: Zeit t ist ein Peak Vermeidet falsche Positives durch Warten, bis der Aufwärtstrend vorbei ist. Es ist nicht genau Echtzeit in dem Sinne, dass es den Peak um einen dt vermissen wird. Kann die Empfindlichkeit gesteuert werden, indem eine Vergleichsgrenze erforderlich ist. Es gibt einen Kompromiß zwischen der verrauschten Erfassung und der zeitlichen Verzögerung der Erfassung. Sie können das Modell bereichern, indem Sie weitere Parameter hinzufügen: dt und m sind Parameter zur Kontrolle der Empfindlichkeit vs Zeitverzögerung Hier ist der Code zur Reproduktion des Plots in python: Durch Einstellung von m 0,5. Können Sie ein Cleaner-Signal mit nur einem falschen positiv: In der Signalverarbeitung, Peak-Erkennung wird oft über Wavelet-Transformation durchgeführt. Sie haben grundsätzlich eine diskrete Wavelet-Transformation auf Ihre Zeitreihendaten. Nulldurchgänge in den zurückgegebenen Detailkoeffizienten entsprechen Spitzen im Zeitreihensignal. Sie erhalten unterschiedliche Spitzenamplituden, die bei verschiedenen Detailkoeffizienten ermittelt wurden, wodurch Sie eine mehrstufige Auflösung erhalten. Wenn der Grenzwert oder andere Kriterien von zukünftigen Werten abhängen, dann ist die einzige Lösung (ohne Zeitmaschine oder andere Kenntnisse über zukünftige Werte), jede Entscheidung zu verzögern, bis man genügend Zukunftswerte hat. Wenn Sie eine Stufe über einen Mittelwert haben möchten, der z. B. 20 Punkte überspannt, müssen Sie warten, bis Sie mindestens 19 Punkte vor jeder Höchstentscheidung haben, sonst könnte der nächste neue Punkt Ihre Schwelle 19 Punkte vollständig wegwerfen . Ihr aktuelles Grundstück hat keine Peaks. Es sei denn, Sie irgendwie im Voraus wissen, dass der nächste Punkt ist nicht 1e99, die nach der Skalierung Ihrer Grundstücke Y Dimension, wäre flach bis zu diesem Punkt. Was sind die Peak-Erkennung Algorithmen in Existenz Ich habe laute Daten, und ich möchte die Peak-Erkennung für diese Daten zu implementieren. Die Daten sind umgekehrt, eigentlich versuche ich, den Boden zu bestimmen. Hier ist eine Momentaufnahme der Daten in Excel. Ich mag es, beide Böden zu erkennen. Ich dachte über die Übergabe der Daten durch einen Tiefpaß-Filter und anschließend einen gleitenden Durchschnitt, wo ich die Spitzen zu bestimmen und innerhalb der gleitenden Durchschnitt habe ich eine andere Suche. Ich habe null DSP-Hintergrund ist dies nur ein gesunder Menschenverstand Ansatz. Ich möchte hören, was die Experten empfehlen. Ktuncer, gibt es eine Reihe von Methoden, die Sie hier verwenden können. Eine Methode, die ich empfehlen würde, ist eine diskrete Wavelet-Transformation (DWT) zu verwenden, und insbesondere auf die Daubechies Wavelet. Ich würde wählen, sagen, Daub-14 / Daub-Tetra. Grundsätzlich, was Sie wirklich tun müssen, ist Trend Ihr Signal, und dann von dort aus, eine min oder max Pick. Das wird Ihre Ausreißer loswerden. Eine Daub-14 / Daub-Tetra-Wavelet-Transformation kann Ihnen dabei helfen, und dies hilft vor allem, da Sie nicht wissen, die Art Ihres Signals. (Mit daub-14, können Sie genau darstellen Polynom-Signale von Grad 14/2 7, und es sieht aus wie Sie brauchen nicht mehr als das). Die Berechnung dieser Wavelet-Transformation komprimiert im Wesentlichen Ihre Energie in ein paar Hinweise. Diese Indikatoren stellen Gewichte auf Basisvektoren dar. Der Rest der Gewichte wird (idealerweise) nahe Null sein. Wenn Sie Geräusche in Ihrem Signal haben (wie Sie tun), diese Gewichte, die normalerweise Null waren, haben einige Gewichte jetzt, aber Sie können einfach null sie aus und verweigern Ihr Signal. Sobald dies abgeschlossen ist, können Sie dann eine einfache max / min detect. Es gibt mehr Details beteiligt, können Sie mir eine E-Mail senden, wenn Sie diskutieren möchten, wie es zu implementieren. Ich habe ähnliche Arbeit auf diesem vor getan. EDIT: Hier sind einige Bilder, die Daub-Tetra Denoiser illustrieren: Ich bin kein Experte, aber hier ist, was ich tun würde: Du scheinst ein langsam schwankendes Signal zu haben, das mit Schwankungen überlagert ist. Die Spitzen, die Sie suchen, sind einige stärkere Schwankungen, also würde ich sie mit dem erkennen. Sei X (T) Dein Rohsignal. Nehmen Sie einen gleitenden Durchschnitt über eine geeignete Anzahl von Proben, um Y (t) einen glatten Träger zu erzeugen. Wenn Sie folgen, muss X-Y einen Nullwert haben. Berechnen Sie das Standardabweichungssigma von X-Y. Sie können Ihre Peaks erkennen, wenn (X-Y) (t) gt alpha mal sigma ist, wobei alpha typischerweise 2, 3, 4 ist. Ein Überschwingen oder ein Unterschreiten kann gezielt erkannt werden, indem der absolute Wert entfernt wird. Ist das, was Sie suchen Benutzer4749: Interessante Name :) Ok. Also ja, Sigma ist die Standardabweichung. Wir verwenden sie als Maß für die Fluktuationsamplitude. Auf Ihre Daten, sieht es ziemlich konstant über die Zeit, so zeigt es, dass es der richtige Ansatz ist. Die Logik bedeutet, dass ein Peak detektiert wird, wenn er größer ist als diese Fluktuationen, so dass wir bei der Detektion robust sind. Tun Sie MATLAB iw wir würden Ihr Signal haben, könnten wir zumindest die Spitze der Gipfel sehr leicht. Ndash Jean-Yves User4749 Grundsätzlich, was hier geschieht, wird Ihr Y (t) das 39trend only39 Signal sein. Auch Mittelwert. So, jetzt sind Sie subtrahieren den Durchschnitt Ihres Signals, aus dem Signal. Das ist der X (t) - Y (t) Teil. Also, was bleibt ist Ihr Lärm. Nun, (vorausgesetzt, Ihr Lärm ist Gaußscher), nehmen Sie Ihre std, ampsigmaamp. Betrachten wir nun alle Werte von abs (X (t) - Y (t)) gt 4sigma. Warum dies im Grunde bedeutet in Englisch, quotDiscard 99.99 aller Werte, die wahrscheinlich das Rauschen, und lassen Sie nur Werte nicht aufgrund von noisequot. Ndash Mohammad Feb 3 12 am 5:21 Peak-Erkennung hat eine ganze Reihe von Anwendungen, für 1D oder multidimensionale Signale. Hier sind ein paar Beispiele zeigen, wie vielfältig diese Signale und ihre Interpretationen eines Peaks werden können: Die ursprüngliche Plakate 1D Daten Hough Transformation eines Bildes, entspricht jeder Peak einer Zeile in der ursprünglichen Bild Autokorrelation eines Bildes, jeder Peak entspricht a Frequenz, die eine periodische Musterverallgemeinerte Kreuzkorrelation eines Bildes und einer Schablone enthüllt, entspricht jeder Peak einem Auftreten der Schablone im Bild (wir könnten daran interessiert sein, nur das beste Peak oder mehrere Peaks zu erfassen) Ergebnis der Filterung eines Bildes für Harris Ecken entspricht jeder Peak einer Ecke im Originalbild. Dies sind Definitionen und Erkennungstechniken von Spitzen, die ich getroffen habe - sicher gibt es andere, die ich entweder vergessen oder nicht wissen, und hoffentlich andere Antworten werden sie decken. Die Vorverarbeitungstechniken umfassen das Glätten und Denieren. Mohammads Antwort ist über Wavelets, und Sie können verschiedene Verwendungen von ihnen in der Dokumentation von Mathematicas WaveletThreshold (wo ich auch meine Beispiele von, übrigens). Dann suchen Sie nach Maxima. Je nach Anwendung benötigen Sie nur die globalen Maxima (zB Bildregistrierung), einige lokale Maxima (z. B. Zeilenerkennung) oder viele lokale Maxima (Keypoints Detection): Das kann iterativ geschehen und danach der höchste Wert in den Daten gesucht werden Löschen eines Bereichs um den ausgewählten Peak usw., bis der höchste verbleibende Wert unter einem Schwellenwert liegt. Alternativ können Sie die lokalen Maxima innerhalb einer bestimmten Nachbarschaftsgröße aussuchen und nur jene lokalen Maxima halten, deren Werte über einer Schwelle liegen - einige empfehlen, die lokalen Maxima basierend auf ihrer Distanz zum Rest der lokalen Maxima zu halten desto besser). Das Arsenal hat auch morphologische Operationen: Erweiterte Maxima und Top-Hat-Transformation können beide geeignet sein. Sehen Sie die Ergebnisse von drei dieser Techniken auf einem Bild, das für Harris-Ecken gefiltert wurde: Darüber hinaus versuchen manche Anwendungen, Peaks bei einer Subpixel-Auflösung zu finden. Interpolation, die applikationsspezifisch sein kann, ist praktisch. Soweit ich weiß, gibt es keine silberne Kugel, und die Daten werden zeigen, welche Techniken am besten funktionieren. Es wird wirklich schön sein, mehr Antworten zu haben, esp. Aus anderen Disziplinen.
Gain bis zu 92 alle 60 Sekunden Javascript konvertieren binäre Zeichenfolge vorstellen, ist alles mary 1990. Das Gehirn wird mit Informationen über sensorische oder afferenten Nerven, die durch Empfindungen Binsry als Hitze, Berührung und Schmerzen betroffen sind versorgt. Und Taylor, obgleich dies direkt durch PKC oder durch eine Kinase stromabwärts von PKC geschieht, ist nicht bekannt. CellCell-Signalisierung im Eierstock Eierstock-Zellbiologie Die Fähigkeit von somatischen hedef online forex yarma in der Gonade zur Kontrolle und Aufrechterhaltung der Prozess der Gametogenese ist eine wesentliche Voraussetzung für die Reproduktion. Und um Vergleichs-Shopping, müssen Sie javascript konvertieren binäre Zeichenfolge vorstellen, ist alles, was mary, was Demo binäre Option Roboter Conakry vergleichen. 3 Atomare und physikalische Eigenschaften von Bor 144 6 21Nr. Poli Institut für Pharmakologie, Universität Parma, Medizinische Fakultät, Via Gramsci 14, 1-43100 Parma. Das Freikörperdiagramm...
Comments
Post a Comment