Erstes Problem ist die Messwerte der Windrichtung zu glätten.
Wenn du eine Reihe hast wie 350°, 350°, 10°, 10° dann ist der arithmetische Mittelwert 180°, "richtiger" wäre aber 0°.
Genau, leider wissen noch nicht, was der Sensor ausgibt. Die möglche AbtastRate von 0,1..10 Hz bei einer festen, internen AbtastRate von 50 Hz legt nahe, dass der Sensor bereits gemittelte/gefilterte/geglättete Werte ausgibt.
Es wäre denkbar, dass der Sensor beim "direkten" Übergang 359,9° <-> 0 falsch mittelt und dadurch am Ausgang des Sensors einen RichtungsWechsel einmal rundherum auf dem langen Wege - scheibar plausibel - nur vortäuscht.
Das waren meine - hoffentlich unberechtigen - Bedenken.
Das ist so natürlich nur sinnvoll, wenn die Abtastzeit so kurz ist, dass sich der Zeiger innerhalb der Abtastzeit nur max. um 180° drehen kann.
Ob die von Harald verwendeten AbtastRaten von 2 Hz (einlesen der Daten) bzw. 1 Hz (die in den Dateien abgelegten Daten) befürchten lassen müssen, dass zwischen zwei aufeinander folgenden Abtastungen reale WindDrehungen von > 180° auftreten könnten?
Vermutlich eher selten, aber nicht ganz auszuschliessen. Ein Abtasten in kürzeren Abständen wäre also wünschenswert.
Was Onkel gemacht hat ist so wie ich das sehe im Prinzip eine Vektorberechnung mit der Einheitskreislänge (d.h. Vektorlänge) von 1.
Anfangs ja, beim Umwandeln in die sin-cos-Darstellung noch. Dieser Pfad wird aber durch die Glättung sehr bald verlassen und ...
Das Problem ist dort aber, dass durch die Glättung beim Zurückrechnen aus den Einzelkomponenten der Vektor nicht mehr die Länge 1 besitzt, und das läuft dann irgendwann aus dem Ruder, vor allem bei nur 32 Bit Float.
Sobald die VektorLänge nicht mehr 1 ist - bewirkt durch die Glättung - wird es abenteuerlich, mit einer Ausnahme: werden die Amplituden der DatenPärchen (sin und cos) jeweils mit demselben Faktor gedämpft UND rechnet man über den arctan auf den Winkel zurück, so hat man zwar - ausser durch GenauigkeitsVerlust - nichts kaputtgerechnet, aber auch nichts gewonnen - den Winkel, von dem man ausgegangen ist, erhält man auch als Ergebnis.
Daher Onkel Dagoberts Ansatz, NICHT über den arctan den "neuen" Winkel auszurechnen, sondern über nur einen der beiden arcsin oder arccos. Damit kann man den Winkel verändern. Aber geschieht dies dann auch in der richtigen Richtung und um einen sinnvollen Betrag?
Wie schaut's mit Fourier aus? Schwingung in GrundFrequenz und Oberwellen zerlegen, diejenigen höherer Ordnung herausoperieren und dann wieder zusammenbasteln? Ich schätze, das wäre "mit Spatzen auf Patronen schiessen - oder waren es Matronen?".
Woran können wir überhaupt erkennen, ob und wie stark die Daten Störungen enthalten? Eine sauber geglättete Kurve muss nicht näher an der Realität sein.
Ich denke mal, die VektorAddition wird kurzzeitige Ausreisser ausreichend ausbügeln. Die Bewertung mit der WindGeschwindigkeit (VektorLänge) sorgt automatisch dafür, dass die mit fallender Geschwindigkeit nachlassende RichtungsGenauigkeit und die bei Windstille undefinierte Richtung nicht stören.
Die Auswertung nach der von Harald angepeilten "16-Sektoren-Methode" liefert mit Haralds TestDaten fast dasselbe Ergebnis, wie die VektorAddition.
Darum plädiere ich für noch mehr "TestDaten", mit einer höheren AbtastRate und mit realen 359,9° <-> 0° Übergängen - ggfs provoziert durch Drehen des Sensors in die vorherrschende WindRichtung. Ein Abschnitt mit ohne bzw. nur wenig Wind wäre auch ganz interessant - also, Eimer drüber ... oder wenn nicht möglich, dann Schwamm drüber.
Und zum Ausklang noch ein Bisschen OffTopic:
Kommt der Wind mit 1 Knoten aus Westen und dann für die gleiche Zeit mit 45 Knoten aus Osten, dann ist die Luft im Mittel mit 44 Knoten nach Osten gezogen.
Könnten wir bitte wieder zu den unverknoteten Geschwindigkeiten zurückkehren?!? Die Knoten erinnern mich allzu sehr an die Knoten in den GehirnWindungen ...
(Ich weiss: 1 Knoten = 1 Seemeile/Stunde = 1852/3600 m/s = 463/900 m/s und, ob die Brise nun von Backbord nach Steuerbord windet oder umgekehrt, sie bläst trotzdem immer von Luv nach Lee und der Bug kann ein Feature sein - muss aber nicht - und ist dennoch unverzichtbar.)
Festzustellen ist: ein SPS-Programmierer sollte nicht zur See fahren,
der kommt niemals wieder nach Hause.
Aber SPS-Prgrammierer haben doch gelernt, dass manchmal lange Zeit kein Land in Sicht ist und kommen damit klar, wenn sich nur ab und zu ein Silberstreif am Horizont zeigt.
Ich verkneife mir lieber die Antwort, dass sogar die FlaschenPost oft ankommt - eher selten zu Hause, aber manchmal sogar an schöneren Stränden.
Könnte nämlich missverstanden werden.
Das habe ich dann mit dem Regler den ich von der S5 her noch kenne verheiratet.
Und schon lauerte wieder die Versuchung, den I-Anteil zu aktivieren ...
Ich schätze, Harald ist mit seinem Windfähnchen gerade draußen.
Aber hoffentlich nicht vom Winde verweht.
Er war im ganzen letzten Jahr nicht so lange offline.
OffLine ist aber nicht automatisch auch offShore.