Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Hallo Gerd,
deine Lösung ist recht schön, so ähnlich hatten wir hier auch schon gearbeitet, d.h. auch mit der Gauss-Filterung...allerdings haben wir danach nicht nochmal geglättet.
Mein Problem war/ist aber, dass das irgendwie "willkürlich" ist. Du hast für die Trennung der Bereiche einen Zahlenwert der Steigung von 0,03 gewählt...aber warum? Fast soweit war ich mit meinen Versuchen auch schon, allerdings hat es zugegebenermaßen mit meiner gewählten Schwelle nicht für alle Frequenzbereiche immer funktioniert. Deswegen habe ich irgenwie was "objektives" gesucht, und nicht aus dem subjektiven Eindruck der resultierenden Ableitungskurve irgendeinen "ganz gut" passenden Zahlenwert.
Kannst du mir deine Beweggründe schildern? Wie kann man die Software evtl. selbst entscheiden lassen, d.h. das ganze dynamisch gestalten?
Ich versuche jetzt erst mal, reale Daten aufzuzeichnen...mal sehen...ich versuche, mich dann im Laufe der nächsten Woche wieder mit Ergebnissen zu melden.
Gruß
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Zitat:Du hast für die Trennung der Bereiche einen Zahlenwert der Steigung von 0,03 gewählt...aber warum?
Weil es passte...
Zitat:Deswegen habe ich irgenwie was "objektives" gesucht, und nicht aus dem subjektiven Eindruck der resultierenden Ableitungskurve irgendeinen "ganz gut" passenden Zahlenwert.
Der Zahlenwert ergibt sich aus der Anzahl Samples pro Abschnitt, der gewählten Länge des MovAvg und der Höhe des Frequenzsprunges, zumindest hängt er davon ab. Du darfst den MovAvg nicht zu kurz (es bleibt zuviel Rauschen übrig) und nicht zu lang (die Frequenzsprünge werden mit geglättet) machen, dann sollte immer ein passender Peak übrigbleiben, der mit einem einfachen Vergleich gefunden wird. Ansonsten gibt es ja noch Funktionen in LabVIEW zum Bestimmen von Peaks...
Außerdem: du könntest auch mit der FFT suchen, wenn die Samplerate stimmt (d.h. hoch genug ist). Dort dann den dominanten Frequenzpeak suchen...
Zitat:Der Zahlenwert ergibt sich aus der Anzahl Samples pro Abschnitt, der gewählten Länge des MovAvg und der Höhe des Frequenzsprunges
Aha...und wie? Ist wohl immer eine Frage von Erfahrung und...tada...subjektivem Eindruck?
Zitat:Ansonsten gibt es ja noch Funktionen in LabVIEW zum Bestimmen von Peaks...
Also wieder eine subjektive Schwelle...
Zitat:Außerdem: du könntest auch mit der FFT suchen, wenn die Samplerate stimmt (d.h. hoch genug ist). Dort dann den dominanten Frequenzpeak suchen...
Hab ich versucht...aber bei wackeliger Frequenz (teilweise mehr als 1Hz) - also auch zappelndem dominatem Peak - ist es nahezu unmöglich bei nur 1Hz Schrittweite den richtigen zum richtigen Zeitpunkt zu finden.
A.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
11.10.2013, 09:11 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2013 09:39 von GerdW.)
Zitat:Ist wohl immer eine Frage von Erfahrung und...tada...subjektivem Eindruck?
Jein. Eine mathematische Formel kann ich dir jetzt nich anbieten, aber der Zusammenhang ist folgender:
- du hast Frequenzsprünge im Signal (ca. 1Hz), die von einem Rauschen überlagert sind
- du hast eine Samplerate, darüber bekommst du einen Anstieg df/dt über die Frequenzwerte
- durch den MovAvg wird dieser Anstieg verschliffen: der gewünschte Peak wird breiter und flacher
D.h. du kannst also Samplerate, MovAvg-Länge und (halbwegs bekanntes) df in eine Formel schmeißen, die ca. df/dt*1/MovAvg-Länge lautet, um die Peakhöhe abzuschätzen. Zum Schluß kommt dann noch der beliebte Frickelfaktor dazu.
Zitat:aber bei wackeliger Frequenz (teilweise mehr als 1Hz)
Deshalb der Zusatz "mit ausreichend hoher Samplerate": dann könnte die FFT besser als 1Hz auflösen und es wäre egal, ob der Hauptpeak bei (z.B.) 12.85 oder 13.15 Hz wackelt, wenn du als Ergebnis "13Hz" wissen willst...
P.S.:
Die nächste Verfeinerung/Verifikation kannst du, wie schon erwähnt, über die doch recht gleichmäßigen Intervalle der Frequenzsprünge vornehmen: selbst, wenn nicht alle Sprünge erkannt werden, bekommst du doch über die erkannten das Intervall heraus. Und wenn du hinterher sowieso einen Mittelwert pro Intervall berechnest, sollten sich ein paar falsch zugeordnete Samples nicht so gravierend auswirken...
Hi Gerd,
das mit der FFT funktioniert aber deswegen nicht so doll, weil die Frequenz im oberen Bereich (gegen 200 Hz) leider teilweise stärker wackelt als die eigentliche Stufe ist (siehe meinen ersten Post).
Zu deiner mathematischen Herleitung: Du hast jetzt mal ein dt von 0,1 angenommen, ich habe aber ja nur simuliert und deswegen ein dt=1 (also "Samples"). Mit meiner Hardware kann ich später mal mit 100 kHz abtasten, das heißt diese Rate muss ich dann in die Abschätzformel einfließen lassen.
Ich bedanke mich jedenfalls schon mal für den bisherigen Support!
Gruß
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
11.10.2013, 12:25 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2013 14:02 von Lucki.)
Mit dem VI "Spitzenwerterkennung" müßte es gut gehen. Habs mal gemacht, an den Parameteren ist vielleicht noch etwas Feintuning angesagt:
Mit dem Vor-Rückwärtsfiltern kompensiert man Verzögerungen - geht natürlich nur bei Offline-Behandlung der Daten.
Edit: Kleine Veränderungen am VI. Frequenzstufen werden jetzt im Graph markiert.
..und wenn die Frequenztrennung Online erfolgen soll, dann melde Dich noch mal, dann geht es so nicht.
(11.10.2013 12:25 )Lucki schrieb: Mit dem VI "Spitzenwerterkennung" müßte es gut gehen. Habs mal gemacht, an den Parameteren ist vielleicht noch etwas Feintuning angesagt:
Auch da ist wieder ne Schwelle anzugeben...anhand von was hast du die festgelegt?
(11.10.2013 12:25 )Lucki schrieb: ..und wenn die Frequenztrennung Online erfolgen soll, dann melde Dich noch mal, dann geht es so nicht.
Tja, das wäre der Idealfall...ich kann aber auch mit der (evtl. stufenweisen) nachträglichen Auswertung leben
Gruß
Achim
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
14.10.2013, 16:21 (Dieser Beitrag wurde zuletzt bearbeitet: 14.10.2013 16:25 von Lucki.)
(14.10.2013 14:31 )Achim schrieb: Auch da ist wieder ne Schwelle anzugeben...anhand von was hast du die festgelegt?
Habe das Vi geändert. Die Eingabewerte für Schwelle und Breite werden jetzt automatisch festgelegt, damit Du nicht mit diesem Problem belastet bist.
Grundlage: Die Spitzen im Graph "Differenz" haben theoretisch (bei rauschfreiem Data-Signal) eine Dreieckform mit der Höhe Delta-f und der Basisbreite 4*Half-Width (Bei gleitendem Mittelwert mit Rechteck-Gewichtung, hatte das geändert). Praktisch kommmt das auch sehr gut hin.
Es liegt also auf der Hand, die Schwelle bei DeltaF/2 zu legen.
Die Breite des Dreiecks ist dann am Schwellwert noch 2*Half-Width. Lt. Online-Hilfe sollte die Breiteneinstellung für das VI Spitzenwert-VI etwa 1/4 der Breite sein, also 1/2 * Half-Width. Habe auch das so gemacht.
Hallo Lucki,
inzwischen hat sich die Problematik ein bisschen verlagert...
Die Ungenauigkeit der jeweiligen Frequenzstufe ist nun vernachlässigbar klein. Es soll nun aber innerhalb einer kontinuierlichen Sinuskurve ein Frequenz-Wechsel (Delta f = 1 Hz) erkannt werden.
Ich hab mal versucht, das mit deiner Vorlage zu lösen. Je einen Frequenzwechsel habe ich in den angehängten VIs aufgezeichnet und mit deiner Vorwärts-/Rückwärtsfilterung behandelt. Leider klappt das nicht so wie gedacht...optisch erkennt man den Wechsel beim Blick auf die Kurve. Die Peak Detection funktioniert aber nicht, weil die Schwelle von Frequenzstufe zu Frequenzstufe nicht gleich ist.
Kurz: Ich blick' überhaupt nicht, wie's weitergehen könnte...Kannst du mir aus der Patsche helfen?