Verfasst am: 27.12.2011, 19:33
Titel: Aus Axes1 neue figure erstellen
Hallo liebe Matlabnutzer;
ich habe eine Frage bezüglich eines in einer GUI steckenden Plots.
Der Plot wird in Axes1 angezeigt. Ich möchte nun außerhalb der GUI eine Figure mit genau dem angezeigten Plots aufgehen lassen. Dies soll beim drücken eines Knopfe passieren. Damit Zwischenergebnisse behalten werden können.
Verfasst am: 28.12.2011, 10:08
Titel: Danke für den Befehl, aber...
Ich komme nicht darauf wie ich den befehl nutzen kann. Mit der Helpfunktion komme ich auch nicht drauf.
Ich möchte vom folgenden Plot(in axes1) angezeigt eine neue Figure erstellen wenn ich den Knopf drücke. Aber auch von anderen Plots die ich in der axes1 anzeigen lasse. Wie mach ich nun einen Kopie von der axes1 und lasse sie in einer neuen Figure anzeigen. Ich komm einfach nicht darauf. IHier mal ein teil meinen Codes wie ich einen Plot von drei Plots in axes1 anzeigen lasse.
Code:
% --- Executes on button press in statischeBerechnung. function statischeBerechnung_Callback(hObject, eventdata, handles) % hObject handle to statischeBerechnung (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) cla(handles.axes1,'reset');
Ver = get(handles.Ver, 'string');
Verg = str2double(Ver);
Staebe = evalin('base','Staebe');
M = evalin('base','M');
DERDIEDAS = evalin('base','DERDIEDAS');
k = evalin('base','k');
nodes = evalin('base','nodes');
Knoten = evalin('base','Knoten');
Koordinaten = evalin('base','Koordinaten');
VV = evalin('base','VV');
Eigenschaften = evalin('base','Eigenschaften');
Richtungsvektor;
Laengen;
Winkel;
StabWeitergabe;
oberprogramm;
uverg = u*Verg;
Skalierungs;
axes(handles.axes1);
for f =1:k;
if nodes(f,4) ==1;
if nodes(f,5)==1;
if nodes(f,6)==1;
plot3(Koordinaten{f}(1),Koordinaten{f}(2),Koordinaten{f}(3),'m*');
hold on;
xlabel('X') ylabel('Y') zlabel('Z') grid ON
end end end end for xx = 1:k;
if nodes(xx,4)~= 1|nodes(xx,5)~= 1|nodes(xx,6)~= 1;
plot3(Koordinaten{xx}(1),Koordinaten{xx}(2),Koordinaten{xx}(3),'ro');
hold on;
end end
for F = 1:k;
out = [F];
text(Koordinaten{F}(1),Koordinaten{F}(2),Koordinaten{F}(3)+0.1,num2cell(out));
hold on
end for A = (1:q);
x= [Koordinaten{DERDIEDAS(A,1)}(1);Koordinaten{DERDIEDAS(A,2)}(1)];
y= [Koordinaten{DERDIEDAS(A,1)}(2);Koordinaten{DERDIEDAS(A,2)}(2)];
z= [Koordinaten{DERDIEDAS(A,1)}(3);Koordinaten{DERDIEDAS(A,2)}(3)];
plot3(x,y,z,'LineWidth',2);
hold on;
end
f=0;
for f =1:k;
if nodes(f,4) ==1;
if nodes(f,5)==1;
if nodes(f,6)==1;
plot3((Koordinaten{f}(1)+uverg((1+((f-1)*3)),1)),(Koordinaten{f}(2)+uverg((2+((f-1)*3)),1)),(Koordinaten{f}(3)+uverg((3+((f-1)*3)),1)),'m*');
hold on;
end end end end
f=0;
for f =1:k;
if nodes(xx,4)~= 1|nodes(xx,5)~= 1|nodes(xx,6)~= 1;
plot3((Koordinaten{f}(1)+uverg((1+((f-1)*3)),1)),(Koordinaten{f}(2)+uverg((2+((f-1)*3)),1)),(Koordinaten{f}(3)+uverg((3+((f-1)*3)),1)),'ro');
hold on;
end end for AA = (1:q);
x= [Koordinaten{DERDIEDAS(AA,1)}(1)+uverg(1+((DERDIEDAS(AA,1)-1)*3),1);Koordinaten{DERDIEDAS(AA,2)}(1)+uverg(1+((DERDIEDAS(AA,2)-1)*3),1)];
y= [Koordinaten{DERDIEDAS(AA,1)}(2)+uverg(2+((DERDIEDAS(AA,1)-1)*3),1);Koordinaten{DERDIEDAS(AA,2)}(2)+uverg(2+((DERDIEDAS(AA,2)-1)*3),1)];
z= [Koordinaten{DERDIEDAS(AA,1)}(3)+uverg(3+((DERDIEDAS(AA,1)-1)*3),1);Koordinaten{DERDIEDAS(AA,2)}(3)+uverg(3+((DERDIEDAS(AA,2)-1)*3),1)];
plot3(x,y,z,'LineWidth',0.5);
hold on;
end
Verfasst am: 28.12.2011, 16:51
Titel: Re: Danke für den Befehl, aber...
Hallo Flolocher,
Ich kann da nur Harald zustimmen: Mit COPYOBJ. Ich finde den Hilfe-Text aufschlußreich. In "doc copyobj" ist sogar ein Beispiel angegeben, mit dem man ein AXES-Objekt in eine neue Figure kopieren kann. Wenn das nicht hilft und Du nicht konkret beschreibst, welche Probleme Du mit diesem Befehl hast, fällt mir auch nichts besseres ein.
Das Posten von längeren Code-Abschnitten ist hauptsächlich dann hilfreich, wenn der Code etwas mit dem Problem zu tun hat.
Verfasst am: 29.12.2011, 10:51
Titel: Das Problem genauer.
Also mein Problem ist es, dass ich über einen zweiten Knopf das aktuell angezeigte Bild in Axes1 in eine neue figure außerhalb der GUI öffnen möchte. Als bsp. Ab dem Befehl axes(handles.axes1); plote ich ja alles in axes1. Nun finde ich einfach keinen weg um zu sagen figure1 = COPYOBJ(axes1). Also das er mir einen Kopie von axes1 in eine neue figure macht.
ich hoffe diese Beschreibung ist deutlicher, wenn nicht einfach nochmal nachfragen.
Vielen Dank.
Ich bin da irgendwie nicht drauf gekommen.
Einen guten Rutsch ins neue Jahr wünsch ich dir.
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.