WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Aus Axes1 neue figure erstellen

 

Flolocher
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.12.2011, 19:33     Titel: Aus Axes1 neue figure erstellen
  Antworten mit Zitat      
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.

Ich freue mich auf eure antworten.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.12.2011, 23:39     Titel:
  Antworten mit Zitat      
Hallo,

du kannst die im Koordinatensystem enthaltenen Objekte (oder am besten gleich das Koordinatensystem) mit COPYOBJ in die neue Figure kopieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Flolocher
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.12.2011, 10:08     Titel: Danke für den Befehl, aber...
  Antworten mit Zitat      
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

for g = (1:k)
   
        quiver3(Knoten{g}(1)+uverg((1+((g-1)*3)),1),  Knoten{g}(2)+u((2+((g-1)*3)),1), Knoten{g}(3)+uverg((3+((g-1)*3)),1) ,Knoten{g}(7)+uverg((1+((g-1)*3)),1),Knoten{g}(8)+uverg((2+((g-1)*3)),1),Knoten{g}(9)+uverg((3+((g-1)*3)),1),Skalierung,'LineWidth',3)
        hold on;
       
end
xlabel('X');
ylabel('Y');
zlabel('Z');
guidata(hObject, handles);
 


Eine erneute Antwort wäre super.
Vielen lieben Dank im Voraus.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.12.2011, 16:51     Titel: Re: Danke für den Befehl, aber...
  Antworten mit Zitat      
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.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Flolocher
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.12.2011, 10:51     Titel: Das Problem genauer.
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.12.2011, 13:47     Titel: Re: Das Problem genauer.
  Antworten mit Zitat      
Hallo Flolocher,

Mir wird das Problem noch nicht klarer.
Was ist "figure1"? Wenn Du vom "zweiten Knopf" sprichst, welches ist der erste?
Eigentlich sollte dies helfen:
Code:
newFigure = figure;
newAxes = copyobj(handles.axes1, newFigure);

Also: Erstelle ein neues Figure-Objekt und kopiere die axes1 hinein.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Flolocher
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.12.2011, 13:58     Titel: Vielen Dank
  Antworten mit Zitat      
Vielen Dank.
Ich bin da irgendwie nicht drauf gekommen.

Einen guten Rutsch ins neue Jahr wünsch ich dir.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.