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

Plot aktualisieren

 

plot_prob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2010, 12:39     Titel: Plot aktualisieren
  Antworten mit Zitat      
Hallo,

ich berechne einmal eine komplexe Funktion und zeige mir diese dann mit surf() an.
Jetzt möchte ich mir iterativ verschiedene Marker (in dieser Funktion) anzeigen lassen und dabei die Marker aus der vorangegangenen Iteration wieder "entfernen" ohne dabei die Funktion neu berechnen zu müssen.

Meine Frage lassen sich alte Marker irgentwie schnell entfernen, oder muss ich den plot in einer globalen Variablen ablegen (falls ja wie mache ich das am geschicktesten?) ?

Mfg


quant82
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 97
Anmeldedatum: 30.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2010, 13:19     Titel:
  Antworten mit Zitat      
spontan fällt mir ein diese vlt invisble zu machen einfach


Code:

set(variable,'Visible','off');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
plot_prob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2010, 09:49     Titel:
  Antworten mit Zitat      
hä?
-> das erscheint mir etwas unsauber!

Wie kann ich die Marker eintragen und diese in der nächsten Iteration wieder löschen. Dh wie lassen sich die einzelnen Marker ansprechen?
Ich setze die Marker bisher mit dem Befehl plot3()

Gibt es da bessere Varianten?


Mfg
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2010, 11:25     Titel:
  Antworten mit Zitat      
Hallo,

plot3 liefert Dir ein handle auf den Plot (also den Marker zurück).
Mit delete kannst Du den Marker entfernen.
Oder Du kannst auch nur die Daten selbst ändern.

Code:

h = plot3(x,y,z);
set(h,'xdata',xneu,'ydata',yneu,'zdata',zneu);  % neue Werte setzen
delete(h)  % Plot löschen
 


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
plot_prob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2010, 13:27     Titel:
  Antworten mit Zitat      
dann müsste ich die ganzen handles speichern, das ist mir zu umständlich.

kann ich mir stattdessen das handle der Grafik speichern und diese dann wieder anzeigen, bevor ich die marker einzeichne?
Das handle enthält die komplette Grafik?

Grüße
 
plot_prob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2010, 13:49     Titel:
  Antworten mit Zitat      
Ich versuche mal genauer zu beschreiben was ich will:

ich habe ein main.m file:
in diesem läuft eine Schleife die irgentwas berechnet und dann wird am Ende dieser Schleife eine Funktion angezeigt.
Diese Funktion wird in einer ausgelagerten Funktion (das soll auch so bleiben) geplottet und es werden verschiedene Marker gesetzt.
Jetzt wird diese Funktion am Ende jeder Iteration aufgerufen und dabei soll jetzt nicht jedesmal die Funktion neuberechnet werden. Es sollen lediglich die alten Marker entfernt werden und neue gesetzt werden.

Ich komme da jetzt etwas durcheinander, da ja die handles in der Funktion nach Beendigung verloren gehen, da lokal.

Wie kann ich das intelligent lösen?
 
Lord nibbler

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2010, 14:44     Titel:
  Antworten mit Zitat      
Hallo,

du kannst deinen Markern einen speziellen Tag mitgeben
Code:
h = plot3(x,y,z);
set(h,'tag','MarkerTag');  % Tag setzen

dann kannst du später wieder die handles finden mit
Code:
MarkerHandles = findobj(FigureHandle,'tag','MarkerTag')

und dann löschen
Code:
delete(MarkerHandles)


Gruß Lord nibbler
 
plot_prob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2010, 19:13     Titel:
  Antworten mit Zitat      
Hallo,

das gefällt mir auch nicht so richtig, da ich relativ viele Marker setzen möchte.

mit gco bekomme ich ja (nachdem zeichen mit surf()) das Handle für die Oberfläche.
Diesen kann ich mir ja in einer Variable fhandle speichern.
Jetzt würde ich gerne in nach jeder Iteration die alte Figure-Umgebung "löschen" und die Oberfläche wieder anzeigen und das klappt nicht.
Code:

Was mache ich da falsch?
Wie kann ich mir so ein Objekt wieder anzeigen lassen?
...ich werd langsam verrückt.

Mfg
 
plot_prob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2010, 19:33     Titel:
  Antworten mit Zitat      
Mal noch Beispielcode:

main.m:
Code:
fhandle = 0;
flag = 1;
for iter = 1:10
 
  fhandle = plotFunc( flag, fhandle);
  flag = 0;
 
  fhandle
 
end


plotFunc.m:
Code:
function [ fhandle ] = plotFunc( flag, fhandle )
  clf;
  if flag == 1
    z = ones(100,100);
    fhandle = surf(z);
%    fhandle = gco;
    hold on;
    plot3(50,50,1,'r.','Markersize',25);
    hold off;
  else
    figure(fhandle);  
  end

end


Im else-Fall soll nun z angezeigt werden und ein anderer (neuer) Punkt geplottet werden. Der alte mit Koordinaten (50,50,1) soll nicht mehr zu sehen sein.
Es soll aber die Marker nicht einzel gelöscht werden, da in der realen Anwendung viel zu viele Marker gelöscht werden müssten.

Hilft mir da gco irgendwie weiter?

Mfg
 
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.