|
|
Oszillierender Output der atan2 Funktion (Simulink+Matlab) |
|
Raketenmaid |

Forum-Fortgeschrittener
|
 |
Beiträge: 58
|
 |
|
 |
Anmeldedatum: 28.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.10.2012, 13:40
Titel: Oszillierender Output der atan2 Funktion (Simulink+Matlab)
|
 |
Ab einen bestimmten Zeitpunkt bekomme ich Oszillationen des Outputs der atan2 Funktion, die ich einfach nicht wegbekommen kann.
Ich habe zwar folgendes bereits im Internet gefunden:
http://www.usenetmessages.com/view......728&id=484940&p=0
Komme damit aber irgendwie nicht weiter. Ich habe folgende Funktion gecodet in Simulink:
löst mir mein Problem aber nicht. Es oszilliert munter weiter.
|
|
|
|
|
Raketenmaid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 58
|
 |
|
 |
Anmeldedatum: 28.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.10.2012, 13:42
Titel:
|
 |
|
|
MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 23.10.2012, 14:08
Titel:
|
 |
Hallo!
atan(y,x) -> atan2(0+-eps,-1) reagiert nun mal sehr sensibel auf Schwankungen von eps. Das ist numerisch die heikelste Stelle dieser Funktion. Wie kann man das lösen? Hm, ist es vielleicht möglich die Genauigkeit von y zu erhöhen? Wenn dies aus einem anderen Verfahren kommt könnte man die Konvergenz durch entsprechende Parameter verbessern.
Ansonsten könnte man sich überlegen, aus welcher Richtung y kommen muss, je nach Fall. Dann setzt man eps eben selbst entsprechend. Ohne nähere Infos über das Problem kann ich dir leider nicht weiterhelfen.
Grüße, Marc
|
|
|
Raketenmaid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 58
|
 |
|
 |
Anmeldedatum: 28.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.10.2012, 09:43
Titel:
|
 |
Die Richtung, aus der y kommt, ist schwer vorherzusagen und kann sich im Laufe der Simulation ändern.
Was ich nicht verstehe, ist, warum es Probleme bei x = -1 gibt.
Nach meinem Verständnis entspricht die atan2(y,x) doch der Funktion atan(y/x), außer, dass der Winkel halt anders dargestellt wird (normalerweise ergäbe der atan(y/x) wohl nur Winkel zwischen -90 und +90°, wenn ich den Help Text richtig gelesen habe. Oder habe ich da was falsch verstanden?
Nun wieso muckt die atan2 Funktion bei einem Winkel von 180?
Ich konnte im Netz leider keine genauere Beschreibung dieser spezifischen Funktion finden und je nach Quelle verstehen die was anderes unter der atan2 Funktion.
|
|
|
Raketenmaid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 58
|
 |
|
 |
Anmeldedatum: 28.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.10.2012, 14:15
Titel:
|
 |
So ganz klar ist mir die Sache noch nicht. Mir fällt auch dazu keine sinnvolle Lösung ein.
Ich habe mal folgenden Code probiert, der kaum verbesserung gebracht hat:
Ganz konkret werden in diesem Fall sowohl Ve(1) als auch Ve(2) sehr sehr klein und der Kram will einfach nicht aufhören zu oszillieren ...
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.495
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 26.10.2012, 14:27
Titel:
|
 |
Hallo,
bitte einen Testvektor zur Verfügung stellen, bei dem das Problem auftritt, damit man selbst damit herumspielen kann.
Grüße,
Harald
|
|
|
Raketenmaid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 58
|
 |
|
 |
Anmeldedatum: 28.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.10.2012, 15:09
Titel:
|
 |
|
 |
|
würde ich gerne, weiß aber nicht, wie ich es machen soll. Wenn ich einen konstanten Wert einleite, kommt natürlich was konstanten raus (habs ausprobiert). Das Problem ist wohl, dass das ganze per se einfach dynamisch gekoppelt ist und es durch numerische Ungenauigkeiten zu diesen Schwingungen kommt. Mir ist nicht klar, wie ich das mit einem einfachen Vektor reproduzieren könnte. Ich habe mich jetzt auch mal hingesetzt und versucht, das irgendwie zu reproduzieren, obwohl ich skeptisch bin, dass ich das ohne das ganze vorliegende System überhaupt kann. Ergebnislos.
Also der Eingangsvektor des Funktionsblocks hängt vom Ausgang desselbigen über einie Ecken ab. So findet sich wohl aufgrund numerischer Ungenauigkeiten ein Oszillieren der Eingangswerte um den Nullpunkt wieder. Nur kann ich gar nicht sagen, ob dieses Oszillieren des Eingangs durch das Oszillieren des Ausgangs verursacht wird oder oszilliert der Ausgang, weil der Eingang oszilliert. Ideal wäre es, wenn ich durch den Code in der Funktion den Ausgang glätten könnte.
EDIT: Ich habe spaßeshalber mal folgenden Code ausprobiert:
D.h. sind die Eingangswerte nur ausreichend klein, werden sie schlicht und ergreifend zu Null gesetzt. Was passiert? atan2 oszilliert fröhlich weiter ...
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.495
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 26.10.2012, 16:27
Titel:
|
 |
Hallo,
du scheinst das ja unter Simulink laufen zu lassen. Lasse dir doch das Eingangssignal des Blocks, in dem du atan2 verwenden willst, in den Workspace ausgeben.
Ich fürchte, man wird nicht umhinkommen, die vorherigen Werte des Signals zu betrachten. Man muss ja schließlich sehen, wann ein Vorzeichenwechsel vorliegt.
Grüße,
Harald
|
|
|
Raketenmaid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 58
|
 |
|
 |
Anmeldedatum: 28.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.10.2012, 10:07
Titel:
|
 |
Also das habe ich natürlich getan. Und, ich glaube, ich schrieb es bereits, das Eingangssignal oszilliert so ein wenig um den Nullpunkt, das bedeutet natürlich, dass hier ein mehrfacher Vorzeichenwechsel vorliegt.
Wie ich aber auch bereits schrieb, weiß ich nicht, ob diese Oszillationen im Eingang nicht von den Oszillationen im Ausgang verursacht werden, weil ja das Eingangssignal teilweise vom Ausgangssignal im dynamischen System abhängt.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.495
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.10.2012, 10:17
Titel:
|
 |
Hallo,
ich glaube, dass mir die Eingangssignale reichen würden, um mir das genauer anzusehen. Wenn du die zur Verfügung stellen könntest?
Befindet sich das ganze in einem diskreten oder einem kontinuierlichen System? Da es um Vorzeichenwechsel geht, reicht es nämlich nicht, jeden Zeitschritt für sich zu betrachten, sondern man muss die Historie (zumindest den vorherigen Wert) mit einbeziehen.
Grüße,
Harald
|
|
|
Raketenmaid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 58
|
 |
|
 |
Anmeldedatum: 28.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.11.2012, 12:07
Titel:
|
 |
|
 |
|
Sorry, wenn ich mich erst jetzt wieder melde. War im Urlaub (und bin nun leider wieder zurück )
Ich habe nun mit einer Kollegin ein wenig nachgeforscht und wir haben folgendes herausgefunden:
Zumindest an einer wesentlichen Stelle kommt es während einer Matrixmultiplikation zu folgendem Verhalten:
Es handelt sich dabei um eine Multiplikation von einer Drehmatrix mit einem Vektor. Der Vektor hat dabei Werte, die im kritischen Bereich zwar monoton steigen und fallen, aber - wohl durch numerische Ungenauigkeiten - um den steigenden bzw. fallenden Wert so leicht schwanken (in etwa wie wenn man eine Sinusfunktion mit einer geraden monoton steigenden oder fallenden Funktion multiplizieren würde, wenngleich das Schwanken eher nicht sinusförmig ist). Durch die Matrixmultiplikation werden diese schwankenden Werte zusammengezählt, mit dem Ergebnis, dass sie im kritischen Bereich im Mittel Null sind, die Schwankungen aber sich nicht aufheben, sodass es wohl zu diesem Oszillieren kommt.
Wir überlegen gerade, ob es eine Möglichkeit gibt, diese Werte einfach zu Null zu setzen, da sie ja eigentlich Null sein sollen. Gibt es eine elegante Möglichkeit, z.B. durch einen vorhandenen Block? Wenn möglich würde ich eine eigene Programmierung gerne vermeiden.
|
|
|
Raketenmaid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 58
|
 |
|
 |
Anmeldedatum: 28.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.11.2012, 14:32
Titel:
|
 |
UPDATE:
Habe mal probeweise eine Funktion eingebaut, die die Ausgabe der Matrixmultiplikation nullt, sobald der Wert unterhalb einer Schwelle liegt. Das Blöde dabei: Die Schwelle muss ich sehr hoch setzen, um das Oszillieren wegzubekommen und selbst das gelingt nicht vollständig. Dies ist also für meine Zwecke ein Holzweg.
|
|
|
Raketenmaid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 58
|
 |
|
 |
Anmeldedatum: 28.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.11.2012, 12:12
Titel:
|
 |
UPDATE:
Ich habe mal folgendes gemacht:
Ich habe die durch die atan2 Funktion berechneten Winkel so umgerechnet, dass der Winkelbereich von 0 bis 360° geht anstelle von -180° bis +180°. Dies hat mir die numerischen Schwankungen eliminiert. Nur leider funktioniert nun die ganze Simulation falsch, d.h. die Ergebnisse sind vollkommen verkehrt. Nun dachte ich doch, dass selbst, wenn man den sin von 360° nimmt, das gleiche rauskommen sollte wie wenn man den sin von 0° nimmt. Analog für Winkel 270° anstelle von -90° ... Oder gibt es da Matlab Spezifitäten, derer ich mir nicht bewußt bin?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.495
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 21.11.2012, 12:39
Titel:
|
 |
Hallo,
du schreibst nur der Einfachheit halber Dinge wie 90 Grad, meinst aber pi/2, oder? Sonst wäre das das erste Problem.
Wie gesagt: wenn ich einen typischen problematischen Datensatz bekomme, schaue ich mir das gerne mal an. Die von dir gemachten Überlegungen nachzuverfolgen würde sich da wohl schwieriger gestalten.
Grüße,
Harald
|
|
|
Raketenmaid |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 58
|
 |
|
 |
Anmeldedatum: 28.09.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.11.2012, 13:50
Titel:
|
 |
Ich weiß ja nicht, wie ich Dir die problematischen Datensätze geben soll, wenn ich die Simulation im Problemfall unterbrechen muss per Str+C, so dass nichts rausgeschrieben wird.
Den Grund, warum es nun einen Unterschied macht, ob man 360° (bzw 2pi) statt 0° hat, wüßte ich aber schon gerne.
PS: Und ja, wenn ich von 90° schreibe, meine ich natürlich pi/2, das ich nur umgerechnet habe.
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|