Verfasst am: 19.02.2011, 20:54
Titel: Mehrere Axes in einem Gui Fenster
Hallo zusammen,
Meine Aufgabe: Ein Mathematisches Pendel mittels Gui darstellen. Es soll
schwingen.
Erledigt: Ich hab es soweit geschafft, dass mein Pendel schwingt.[/img][/u]
Ich habe mal meine Ergebnisse hochgeladen, um euch
zu zeigen wie ich das gemacht habe. Einfach den Startwinkel
eingeben Bsp. 60 ,Ausganstellung betrachten und simulieren.
Problem: Nun habe ich versucht unter diesem Axes noch einen
Axes(2) einzubauen,
indem man den Winkelverlauf über die Zeit gleichzeitig abbilden
kann. Bzw. muss ich noch zusätzlich in zwei weiteren
Axes(3)+(4) das Phasenportrait und den reltiven Fehler
darstellen.
Wie kann ich das programmieren, dass alle Diagramme
zeitgleich mit dem Pendel in einem Fenster
untereinander ausgegeben werden?
Wie könnte die nötige ergänzung aussehen, dass ein bestimmter
Axes(n) mit einem bestimmten algorithmus programmiert wird?
Ich hoffe ihr könnt mit meiner frage was anfangen.
Beste Grüße
Sandro
N800T6Im.pdf
Beschreibung:
Hier ein beispiel wie die Diagramm verläufe unter dem Pendel aussehen sollten. (Winkel/Zeit)(Phasenportrait)(Relative Fehler)
das sollte alles mit SUBPLOT gehen. Du musst nur immer ins richtige Koordinatensystem gehen, wenn du die Plots aktualisieren willst.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ich bekomm jetzt zwar zwei Diagramme drauf hab aber zwei Probleme:
1. Die Diagramme verschieben sich hinter die Button's. Wie kann ich das
steuern, dass sie so bleiben wie beim einfachen Mathematischen Pendel.
2. Auf dem Winkel/Zeit verlauf ist der wandernde Punkt zu erkennen. Wie
schaff ich es, dass ein Spurverlauf zurückbleibt?
Hab das einfach mal ganz primitiv versucht und einfach die Null Position
mit dem wandernden Punkt verbunden. Klappt net
Hab festgestellt, dass ich mein M-file garnicht mit geschickt habe.
Deshalb hab ich noch einmal den Pendel allein und die veränderte Gui geschickt mit dem WInkel/Zeit verlauf.
Grüße
Sandro
Weiterentwicklung.zip
Beschreibung:
Das ist das GUI mit dem versuch ein Winkel/Zeit-Verlauf einzubauen.
Aber Problem 1 besteht noch! Die Diagramme wollen einfach nicht in ihrer vorgegebenen Axes Größe bleiben.
Ich hab auch einfach mal versucht 2 Axes in meiner Figure einzubauen und mittels subplot darauf zu zugreifen,...aber Matlab macht immer sein eigenes Ding.
wenn du eine GUI hast und daher die Position der Koordinatensysteme selbst wählen musst, ist SUBPLOT ungeeignet.
Dann solltest du die Koordinatensysteme vorab erstellen und über die Handles (üblicherweise handles.axes1 etc.) das richtige Koordinatensystem ansteuern.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
ok, so sieht es im moment aus. Das ist mein zweiter Push Bottom. Durch klicken auf diesen Bottom wird die Simulation gestartet.
So weit ich das verstanden habe, kann ich also mit handles.irgendwas daten zwischen der guir_OpeningFcn, der guir_OutputFcn und meiner Push Bottoms und Static Texte daten austauschen. Ich weis nicht wie und wo ich handles.axes1 anordnen soll damit er auf die Axes plottet in meiner figure.
Code:
% --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
Dazu muss das Koordinatensystem vorher mit GUIDE erstellt worden sein, das Default-Handle ist dann eben handles.axes1.
Vielleicht kannst du das ja an einem einfacheren Problem nachvollziehen? Sich durch deinen ganzen Code zu wühlen ist doch etwas mühsam.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Aber das war alles andere als gut. Scheint nicht richtig zu sein.
Ich hab auch festgestellt, dass er bei meinem einfachen Pendel zunächst irgend eine skalierung anzeigt und sobald er rechnet dann die von mir definierten skalierungen einführt.
Gibt es ein Befehl, dass die skalierungen von anfang andefineirt werden.
Theoretisch sollte das im OpeningFcn passieren, bevor das Fenster geöffnet wird.
falls du auf keine Lösung stößt, sag doch noch mal kurz, was das zweite Problem war.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
das zweite Problem: skalierung der Axes habe ich lösen können.
Habe einfach den Befehl in die "OpeningFcn" eingebaut und somit ist die Skalierung von anfang an festgelegt
Aber eine Sache muss ich anders Lösen. Undzwar das Problem das ich zu beginn hatte.
Ein Punkt läuft durch das Diagramm. Jeder Punkt muss erhalten bleiben, damit sich ein Winkel-Zeitverlauf bildet. (Linien-Verlauf)
Das Problem ist, dass das nur funktioniert wenn ich im laufe des Programms auf das Diagramm klicke. Und falls ich auf das andere Axes klick, dann macht er das bei dem anderen auch.
Ich kann z.B. Grid on einstellen im Property Inspector. Dann ist das Spezifisch für das eine Axes definiert, ohne von ausen einwirken zu können.
Kann ich solch eine Funktion auch für das festhalten von Punkten auf dem Diagramm einstellen?
So dass sich die Skalierungen den Eingabedaten anpassen.
z.B. habe ich bei einem Start winkel von 90° eine Amplitude von 90° aufzuzeichnen. Wenn aber das Diagramm 90°/-90° als Amplitude hat und der Startwinkel bei 160° liegt, dann wird nicht alles im Diagramm aufgezeichnet.
Zum anderen Problem:
ja, und genau so, wie du das geschrieben hast, nur ohne die Punkte.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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
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.