Verfasst am: 30.10.2011, 11:58
Titel: ploten in GUI
hallo,
ich versuche seit eine Stunde zwei figure in meinem GUI ploten. figure habe ich fertig bekommen und wenn ich es ausführe (Ohne GUI), sehe ich auf dem Bildschirm.meine Frage ist wie kann ich diese figure in meinem GUI ploten und wie kann ich die Koordinaten für die figure festlegen damit genaue eine recht oben und die andere link oben in meinem GUI gezeigt wird? die Figur sind Roboterarme in 3d und werden als Animation dargestellt, d.h. man sieht die Bewegung von der Arme.
dies ist mein erster Beitrag, in dem ich eine Antwort und keine Frage poste. Ich hoffe, ich kann dir helfen
Also, ein GUI ist ja bereits ein Figure. Wenn du in dem m-file des GUIs z.B. figure(1) oder figure(2) eingibst öffnen sich diese Figures ausserhalb des GUIs. Für dich also eher nicht sinnvoll.
Ich weiß zwar nicht genau was du vorhast, würde dir aber empfehlen zwei axes Objekte einzufügen. In diesen kannst du getrennt voneinander plotten, was du willst. Das Einfügen dieser Objekte geht ganz einfach in GUIDE, oder du tippst es ins m-file.
Die Position dieser axes Objekte kannst du wieder entweder im Property Inspector des jew. axes Objekts unter Position ändern, oder im m-file:
Code:
set(handles.axes1,'pos',[x y width height]) set(handles.axes2,'pos',[x y width height])
danke dir für die Hilfe, ich habe am Anfang genauso gemacht wie du gesagt hast, ich habe zwei axsi in GUI platziert usw. dann habe ich in ..-OpenningFcn meine Funktion bzw. Name von meiner Animation geschrieben.
Beim starten wird meine Animation als Hintergrund in meinem GUI geplotet und zwar zu groß! (siehe foto)
Ich finde nicht raus wie ich in m.File es so definiere dass beim starten die Animation in mein axsi geplotet wird
und nicht woanders! Zusätzlich soll es automatisch auf die GUI erscheint wie es jetzt ist, ich meine, es muss ohne plot-Button sein d.h. ohne irgendwas geklickt wird. Die animation besteht aus mehrer m.file die hintereinander gerechnet werden, Ich schreibe einfach in Command-Windoes die Animation-Name und es wird geplotet.
Ich glaube, ich muss irgendwie die Animation einbinden in GUI.
Hast du eine Idee?
Du solltest beim Arbeiten mit mehreren Axes/Figures stets die 'Parent'-Property nutzen. Somit verhinderst du, dass deine Plots im falschen Achsensystem auftauchen.
Beispiel:
Code:
% Erstelle 2 figures
fig1=figure('Position',[5050800600]);
fig2=figure('Position',[9050200600]);
% Definiere deine Achsen UND verweise auf die Figures
ax1=axes('parent',fig1,'Position',[0.10.55,0.8,0.35]);
ax2=axes('parent',fig2,'Position',[0.10.1,0.8,0.45]);
%Definiere deine Plots UND verweise auf die Axes
p1=plot(sin(0:0.01:pi), '--g','parent',ax2)
p1=plot(cos(0:0.01:pi), '-r','parent',ax1)
Zur Ausführung: du kannst ein Skript, oder eine Function schreiben, welche nacheinander die gewünschten Skripte aufführt, dies kann durch einen Funktionsaufruf oder mittels run('C:\........meinskript.m') geschehen.
1)Zum einen willst du ja, dass der Plot sofort erscheint, ohne Klick auf einen Push Button. Dies erreichst du, wenn du die Befehle in die Opening Fcn schreibst, aber das hast du ja eh schon gemacht.
2) Ein bestimmtes axes object sprichst du folgendermaßen an
z.B. du hast zwei objecte mit "Tag"'s "axes1", "axes2"
Nun sollte in axes1 der plot_1 und in axes2 der plot_2 durchgeführt werden.
Die Tags kannst du im Property Inspecotr der jew. axes obj. ändern.
Ich hoffe ich konnte dir helfen.
Gruß Jens
leider habe ich immer noch Problem und zwar, ich habe zwei axes in meiner Gui und in diese axes soll die Animation geplotet werden.
Ich schreibe in mein axes-Funktion einfach diese Si-Funktion und funktioniert perfekt.
Code:
% --- Executes during object creation, after setting all properties. function axes2_CreateFcn(hObject, eventdata, handles) % hObject handle to axes2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: place code in OpeningFcn to populate axes2 % %%%%%%%%%%%%%%%%%%%%%%%%%%%SI_FUNKTION [X,Y] = meshgrid(-8:.5:8) ;
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(Z);
aber wenn ich mein eigne Animation rein schreibe, tut garnicht und zeigt leere axsi!
Meine Animation besteht aus merher M.File und wenn ich in Command windows
einfach rein schreibe anim_r15 dann öffnet sich eine Figure und läuft die Animation.
Meine Frage ist wieso läuft meine Animation in GUI nicht? Wie kann ich die Animation aufrufen? mit Befehl Run ? oder mache ich alles falsch?
ich kenne zwar deine m-files der Animation nicht, denke aber, dass es an diesen m-files liegt.
Zum Plot der Animation hast du in den m-files wahrscheinlich irgendwo den plot Befehl ausgeführt. Wenn du es in dem m-file nicht explizit angibst, kann matlab nicht wissen, dass es den plot in dem konkreten axes object ausführen soll.
Deshalb würd ich vorschlagen, dass du die m-files in das m-file des GUIs kopierst, und diese dann so abänderst, dass der plot im passenden axes object(vorheriger post) ausgeführt wird.
Verfasst am: 09.11.2011, 12:25
Titel: Zeilenweise text ablesen und ploten
Halle Jens,
ich habe noch eine Frage zu ploten und zwar
ich habe alle m.file die ich zu animieren brauch, in m.file von der Gui kopiert und so angepasst dass es funktioniert und bei klicken wird meine werte gerechnet und dann wird die Animation gezeigt aber als Hintergrund in GUI. Deswegen habe ich ein axes in mein GUI
hinzugefügt und spreche ich dieses axes mit
axes(handles.axes1)
und direkt danach schreibe ich dass es in diese axes soll geplotet werden
plot(manu_r15, anim)
aber funktioniert leider nicht, weist du woran es liegen kann?
meine andere Frage ist: ich habe eine Text-Datei die so beginnt
P1234
N10 G49 G54 F1000 X0 Y10 Z200 A0 B20 C180
N20 G49 G0 F1000 X9 Y40 Z100 A0 B0 C20
.
.
.
N60 M30
#
gibt es eine Möglichkeit dass ich diese Datei aufrufe und erste beide Zeile ablese ( nur die werte X Y Z A B C ) und in dieser Form P1= [X, Y, Z, A, B, C]; speichern wobei ich später aufrufen und wieder nutzen kann oder direkt in denselben m.file nutzen kann?
Das sind die Koordinaten einer Position in Raum und ich möchte Punkt to Punkt Koordinaten ablese und animiere.
Die Zeilen beginnen immer mit Programmname und Satznr. N10
kann ich mit eine for-schleife es zu machen?
Vieln Dank
Jan
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
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.