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

Bestehende Figures und Subplots ansprechen

 

MariaMaria
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 19.02.19
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 11.04.2019, 13:13     Titel: Bestehende Figures und Subplots ansprechen
  Antworten mit Zitat      
Hallo,

da mein Programm immer umfangreicher wird, komme ich so langsam an meine Grenzen und bitte um Eure Hilfe:
Ich habe mir ein GUI erstellt, über welches ich per Button ein Skript starte, welches wiederum der Reihe nach einige Unterskripte abarbeitet. Am Ende wird u.a. eine Figure mit 4 Subplots erstellt. Die Figure heißt f1, die Subplots f1s1, f1s2, f1s3, f1s4. Soweit so gut. Danach soll es die Möglichkeit geben, zusätzliche Daten in einen der Subplots (welcher hängt von den Daten ab) einzutragen. Diese Daten liegen als Table (Daten_BP_Diagramm) vor.
Grundsätzlich würde ich das über
Code:

Name_Diagramm=Daten_BP_Diagramm(i,1);
Name_BP=Daten_BP_Diagramm(i,2);
figure(f1);
    if Name_Diagramm=='HDV'
        x_Wert=Daten_BP_Diagramm(i,'V_0HDV_298K');
        y_Wert=Daten_BP_Diagramm(i,'PiV_HDV');
        subplot(f1s1);
    elseif Name_Diagramm=='NDV'
        x_Wert=Daten_BP_Diagramm(i,'V_0NDV_298K');
        y_Wert=Daten_BP_Diagramm(i,'PiV_NDV');
        subplot(f1s2);
     elseif Name_Diagramm=='NDT'
        x_Wert=Daten_BP_Diagramm(i,'PiV_ges');
        y_Wert=Daten_BP_Diagramm(i,'mred_NDT');
        subplot(f1s3);
     elseif Name_Diagramm=='HDT'
        x_Wert=Daten_BP_Diagramm(i,'PiV_ges');
        y_Wert=Daten_BP_Diagramm(i,'mred_HDT');
        subplot(f1s4);
    end
   
hold on
plot(x_Wert,y_Wert,'DisplayName',Name_BP);
 


Das Problem ist aber, dass f1, bzw. f1s1 usw. der aufrufenden Funktion nicht bekannt sind, denn Sie wurden ja vorher durch eine andere Funktion erstellt. 2 Lösungswege fallen mir dafür ein:
1) Ich müsste f1, f1s1, usw. z.B. dem Base-Workspace übergeben mit
Code:

assignin('base','f1',f1);
 

und dann evtl. mit
Code:
wieder aufrufen.

Habe aber in Beiträgen dazu gelesen, das assignin und evalin möglichst vermieden werden sollten und es mich auch zugegebenermaßen sehr verwirrt.

2) Ich speichere die Figure nach ihrer Erstellung mit
Code:

savefig(f1,'f1_temp');
 

ab, und rufe sie, wenn ich sie bearbeiten will mit
Code:

f1=openfig('f1_temp','reuse');
 


Das funktioniert auch soweit, allerdings wird f1 trotz des "reuse" als neues Fenster geöffnet-warum?
Außerdem ist mir nicht klar, wie ich aber die einzelnen Subplots ansprechen kann. Wird die Information, dass ich die Subplots bei der Erstellung benannt hatte (f1s1, uws.) mit dem
Code:
-Befehl mit abgespeichert? Wie bekomme ich darauf Zugriff?
Ansprechen würde ich Sie dann mit bspw.
Code:

subplot(f1s1);
hold on
plot(x_Wert,y_Wert,'DisplayName',Name_BP);
 


Vielen Dank für Eure Antworten, ich hoffe ich habe mich halbwegs verständlich ausgedrückt.

Maria

PS: Ich tue mich auch grundsätzlich noch schwer, Variablen etc., die in Funktion A erstellt wurden, in weiteren Funktionen zu nutzen, v.a. unter Einbeziehung von GUIs (siehe Lösungsansatz 1). Ich denke zwar, ich habe das mit den unterschiedlichen Workspaces prinzipiell verstanden, aber die praktische Umsetzung ist eher unelegant. Gibt es dahingehend empfehlenswerte Literatur?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.04.2019, 15:35     Titel:
  Antworten mit Zitat      
Hallo,

meine Vorschläge:
1. Variablen übergeben: Wenn eine Funktion ein graphisches Objekt oder mehrere erzeugt, dann die Handles darauf zurückgeben.
2. Die Eigenschaft 'Tag' beim Erstellen der Graphikobjekte setzen und später mit findobj nach Objekten mit dem Tag suchen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 2024 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.