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

Wie plotte ich mit drawnow nicht in aktuelle GUI?

 

Joa
Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 05.08.2010, 10:02     Titel: Wie plotte ich mit drawnow nicht in aktuelle GUI?
  Antworten mit Zitat      
Hey,
ich hab eine Frage. Wie schaffe ich es dem drawnow oder einem anderen plot oder aktualisierungs Befehl zu sagen, in welche figure er plotten bzw aktualisieren soll?

Ich möchte bei jedem Plot explizit angeben in welche GUI ich plotten möchte.

Geht das irgendwie über
Code:
handlesSPSPosen=guihandles(SPSPosen);

so einen Befehl?
Und wenn wie muss er lauten bzw wie kann ich ihn ändern, dass das funktioniert?

Momentan plottet es immer in die zuletzt neu geöffnete GUI, aber ich möchte in die zuerst geöffnete GUI plotten.

Vielen Dank schonmal.

LG Joa
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: 05.08.2010, 10:18     Titel:
  Antworten mit Zitat      
Hallo,

das Problem dürfte nicht bei drawnow, sondern den vorangehenden Plot-Befehlen liegen. Bei vielen Plot-Befehlen kann man als erstes Argument das Handle des Koordinatensystems (nicht der GUI), in dem geplottet werden soll, angeben (typischerweise innerhalb von GUIDE handles.axes1 oder so).
Wie du die Handles der Elemente einer GUI einer anderen GUI mitteilst, ist dann wieder die andere Frage.

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

Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 05.08.2010, 11:41     Titel:
  Antworten mit Zitat      
Hey,
und wenn ich patch verwende wie gebe ich dann an in welches axes bzw figure ich plotte?
Ich glaube ich stehe gerade ein bischen auf der Leitung...
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: 05.08.2010, 12:32     Titel:
  Antworten mit Zitat      
Hallo,

bei patch mit
Code:
patch(..., 'Parent', handles.axes1)
bzw. äquivalent.

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

Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 05.08.2010, 13:02     Titel:
  Antworten mit Zitat      
Ok, danke.
Das mit dem patch funktioniert jetzt teilweise. Teilweise sieht folgendermaßen aus:
Ich mache das jetzt wie folgt:
Code:
haxes = findobj( 0, 'Type', 'axes');

szHa=size(haxes,1);

haxes=haxes(szHa);

p = patch('faces',t, 'vertices',v,'Parent',haxes);
    set(p, 'facec', 'b');             % Set the face color
    set(p, 'facec', 'interp');        % Set the face color flat
    set(p, 'FaceVertexCData',c);      % Set the color
    set(p, 'facealpha', 1)            % Use for transparency
    set(p, 'EdgeColor', 'none');      % Set the edge color
    set(p, 'FaceLighting', 'phong');

    cmap = colormap(hot);
    cmapTmp = zeros(size(cmap));
    for i = 1:length(cmap)
        cmapTmp(i,:) = cmap(length(cmap)+1-i,:);
    end
    colormap(cmapTmp);
    colorbar;
drawnow;
 


Da, wenn ich das richtige sehe, immer das axes was als letztes in haxes steht meine erste GUI ist.

Was ich jedoch nicht verstehe ist, dass nach mehrmaligem aufrufen daas Endbild immer noch in die sich immer wieder aktualisiernde GUI geplottet wird.
Gibt es noch etwas was ich dabei beachten muss oder woran könnte das sonst liegen?

LG Joa
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: 05.08.2010, 13:59     Titel:
  Antworten mit Zitat      
Hallo,

das
Code:
haxes = findobj( 0, 'Type', 'axes');
halte ich für eine sehr unsichere Sache, die hier ja auch schief geht.

Warum speicherst du das Handle nicht direkt irgendwo / übergibst es?

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

Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 05.08.2010, 14:06     Titel:
  Antworten mit Zitat      
Da ich nicht weiß wie ich das machen soll.
Was ich vor allem nicht ganz verstehe ist, warum ich in jeder GUI ein axes habe worin geplottet werden kann wobei ich nur in der ersten mir wirklich eins angelegt habe.

Was ist denn genau die elegantere Version zu meiner?

LG und vielen Dank für die Geduld!
Joa
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: 05.08.2010, 14:17     Titel:
  Antworten mit Zitat      
Hallo,

für mich ist das schwierig zu beantworten, da ich nicht weiß, wie deine GUIs überhaupt miteinander kommunizieren.
Möglichkeiten zum Speichern des Handles auf das Koordinatensystem wären getappdata / setappdata oder das Verwenden der Eigenschaft UserData. Aber auch dazu müssen die GUIs zumindest die Handles des jeweils anderen kennen.

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

Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 05.08.2010, 14:27     Titel:
  Antworten mit Zitat      
Das ist für mich etwas vage nachzuvollziehen.

Ich erkläre mal wie es bei mir abläuft:
Also ich habe eine HauptGUI die heißt Projekt und von da aus rufe ich meine SubGUI, die heißt Posen, mittels einer Checkbox auf. Dann werden verschiedene Berechnungen durchgeführt und die SubGUI "Posen" immer wieder mit set auktualisiert. Am Ende der Berechnungen soll mit patch geplottet werden und zwar in meine HauptGUI "Projekt". Der Befehl plottet aber offentsichtlich immer in die zuletzt geöffnete GUI.

Hilft dir das weiter um mir weiter zu helfen Smile

LG Joa
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: 05.08.2010, 14:44     Titel:
  Antworten mit Zitat      
Ok.

Offensichtlich kennst du also in der GUI Projekt die Handles der GUI Posen (sonst könntest du dort ja nicht aktualisieren). Jetzt musst du nur noch erreichen, dass die GUI Posen auch die Handles der GUI Projekt kennt.

Dann siehe 12:32.

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

Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 05.08.2010, 15:18     Titel:
  Antworten mit Zitat      
So, ich habe das jetzt so gemacht:

Code:

axes(handles.axes1);
p = patch('faces',t, 'vertices',v);
colorbar;
drawnow;
 


Und jetzt wird auch in die HauptGUI geplottet, aber in meiner SubGUI wird trotzdem ein Koordinatensystem angezeigt, warum?!
Und wie bekomme ich es weg?

LG Joa
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: 05.08.2010, 16:41     Titel:
  Antworten mit Zitat      
Hallo,

dieses neue Koordinatensystem entsteht erst mit dem patch-Befehl?
Dann weiß ich auch nicht weiter - abgesehen von der Sache mit 'Parent', die man noch probieren könnte.

Grüße,
Harald

P.S.: Es ist schon klar, dass sich handles.axes1 normal auf die momentane GUI bezieht?
Private Nachricht senden Benutzer-Profile anzeigen
 
Joa
Themenstarter

Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 05.08.2010, 17:04     Titel:
  Antworten mit Zitat      
Hey,
das mit Parent habe ich schon ausprobiert aber es kommen lauter Fehlermeldungen und aufeinmal schließen sich alle meine GUIs.
Ich glaube das liegt daran, das die function von der aus patch aufgerufen wird an mehreren Stellen in meinem Quellcode aufgerufen wird. Es ist schwer zu erklären da das Programm sehr umfangreich ist.

Welche GUI meinst du als aktuelle?

Vielen Dank trotzdem.

LG Joa
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: 05.08.2010, 19:03     Titel:
  Antworten mit Zitat      
Hallo,

die aktuelle ist die, auf die sich die Handles-Struktur bezieht - sprich die, deren Code man gerade ausführt.

Bei den Fehlermeldungen wäre interessant, *welche* Fehlermeldungen kommen.

Grüße,
Harald
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.