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 läuft auf anderer Figure weiter

 

JaSoIstEs
Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 25.11.2014, 20:52     Titel: Plot läuft auf anderer Figure weiter
  Antworten mit Zitat      
Servus Leute,

hab ein kleines Problem....

Habe ein code geschrieben der mir ein paar Berechnungen bzw. eine Analyse vornimmt.

Das alles lässt sich von einer GUI starten die auch einen Plot beinhaltet das aber "statisch" bleibt.

jetzt das Problem...:

Habe zwei subplots die mir im prinzip die ganzen berechnungen als plots darstellen.
Diese plots sind aber dynamisch (bewegen sich bzw. aktualisieren sich laufend)

sobald ich aber in die gui gehe oder in ein anderen plot im subplot klicke oder einfach das plot fenster klicke geht dieser dynamische plot mit und macht dort weier....was ziemlich kurios ist.

Habe den code leider im Moment nicht zur hand, morgen oder übermorgen erst wieder.

Ich hoffe ich konnte das problem einigermaßen schildern.
Vielleicht könnt ihr ja schon ohne code eine erste analyse bereitstellen.

Danke euch im Voraus.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

wenn nicht anders angegeben, wird plot im aktiven Koordinatensystem ausgeführt. Durch Klicken wird ein anderes Koordinatensystem aktiv.

Abhilfe:
Bei plot-Befehlen und mehreren Koordinatensystemen immer das Handle mit angeben, z.B.
Code:


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

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 26.11.2014, 09:23     Titel:
  Antworten mit Zitat      
Guten Morgen,

erstmal danke für die schnelle Antwort.

Ich habe gedacht das mache ich schon mit folgendem Code:

Code:

% Graphical Output
% ================

if GrphOut == 1
    h           = findobj('Name', 'Progress Monitoring');
    if isempty(h)
        h           = figure('Units', 'normalized', 'Position', [0 0 0.75 0.75],  'Name', 'Progress Monitoring',...
                             'NumberTitle', 'off', 'Color', [0.5 0.6 0.7]);
        hi          = subplot(2,2,1);
        set(gca, 'Ylim', [0 1.25]);
        hj          = subplot(2,2,2);
        set(gca, 'Ylim', [0 1.25]);
        hk          = subplot(2,2,3);
        set(gca, 'Ylim', [0 2.00]);
        hl          = subplot(2,2,4);
        set(gca, 'Ylim', [0 2.00]);
    else
        figure(h)
        hcidrn      = get(h, 'Children');
        hi          = hcidrn(4);
        hj          = hcidrn(3);
        hk          = hcidrn(2);
        hl          = hcidrn(1);
    end
end
 


Und hier ein Beispiel für einen Plot Code:

Code:

if GrphOut == 1
    subplot(hi)
    hold on
    plot(OPary(:,1), OPary(:,2)/Tkeypoint, 'm', OPary(:,1), OPary(:,12)/100, 'g',...
         OPary(:,1), OPary(:,7)/Ipeak,     'r')
    set(gca, 'Ylim', [0 1.25]);
    xlabel('Speed in rpm')
    ylabel('Current, Torque, Efficiency in p.u.')
    drawnow
    subplot(hj)
    hold off
    subplot(hk)
    hold off
    subplot(hl)
    hold off    
end
 


Weiter wird das Figure "Progress Monitoring" in einer anderen M-File gesucht und hinein geplotet:

Code:

% Graphical Output
% ================

if GrphOut == 1
    h           = findobj('Name', 'Progress Monitoring');
    hcidrn      = get(h, 'Children');
    hj          = hcidrn(3);
    hk          = hcidrn(2);
    hl          = hcidrn(1);
end
 


Und dann der Code zum Plotten:

Code:

            % Graphical Output
            % ----------------
       
            if GrphOut == 1
                subplot(hj)
                hold off
                plot(POSary, TRQary/Tdem, 'm', POSary, CURary/IpeakMAX, 'r', POSary, EMFary/Vdc, 'b')
                xlabel('Advance Angle')
                ylabel('Torque, Current, BackEMF')
                subplot(hl)
                plot3(CtrlMTX(:,27), CtrlMTX(:,28), CtrlMTX(:,12)/100 , 'g+',...
                      CtrlMTX(:,27), CtrlMTX(:,28), CtrlMTX(:, 7)/IpeakMAX, 'r+')
                hold on
                xlabel('Advance Angle')
                ylabel('Conduction Angle')
                zlabel('Current & Efficiency in p.u.')
                drawnow
            end
 


Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.11.2014, 10:42     Titel:
  Antworten mit Zitat      
Hallo,

in deinen plot-Befehlen fehlt eben genau dieses erste Argument ax.

Wenn du bei deinem bisherigen Ansatz bleiben möchtest, solltest du
Code:
statt
Code:
verwenden.

Aus der Doku von subplot:
Zitat:
subplot(h) makes the axes with handle h the current axes of its figure, but does not make its figure the current figure if it is not already the current figure.


Im Gegensatz dazu, aus der Doku von axes:
Zitat:
axes(h) makes existing axes h the current axes and brings the figure containing it into focus.


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

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 10.12.2014, 15:39     Titel:
  Antworten mit Zitat      
Hallo Harald,

leider konnte ich es erst heute ändern und testen.

Bis jetzt funktioniert alles sehr gut.

Ich danke dir vielmals. Very Happy Very Happy Wink Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 08.03.2015, 10:36     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich müsste dich hier nochmals nerven.

Ich hab das Problem das dieser dynamische Plot sich nicht minimieren lässt d.h. jedes mal wenn er sich aktualisiert ploppt das Fenster wieder auf und der Rythmus liegt hier bei unter einer Sekunde. Wenn ich an nur einem Bildschirm arbeite (was vorher nicht der Fall war) nervt das richtig da man in dieser Zeit nichts anderes mehr machen kann.

Gibt es dazu irgendeine Einstellung ?

Danke im Voraus.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.03.2015, 11:20     Titel:
  Antworten mit Zitat      
Hallo,

du kannst die Figure ja docken. Interaktiv oder mit
Code:
set(gcf, 'WindowStyle', 'docked')


Grüße,
Harald
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: 08.03.2015, 17:08     Titel:
  Antworten mit Zitat      
Hallo JaSoIstEs,

Zitat:
jedes mal wenn er sich aktualisiert ploppt das Fenster wieder auf

Dann entferne den Befehl, der das Fenster in den Vordergrund ploppen lässt:
Code:

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

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 09.03.2015, 14:29     Titel:
  Antworten mit Zitat      
Danke für die Vorschläge.

@Harald: Daran habe ich gar nicht gedacht Embarassed

@Jan S:
Wenn ich doch das

Code:


entferne bekomme ich doch gar kein Fenster mehr ? Oder hab ich jetzt einen Denkfehler ?

Habe das ja nur in der "else" drin, falls die figure nicht existiert erstelle ich mir die figure.
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: 09.03.2015, 22:01     Titel:
  Antworten mit Zitat      
Hallo JaSoIstEs,

Zitat:
jedes mal wenn er sich aktualisiert ploppt das Fenster wieder auf

Dieses Verhalten möchtest Du loswerden, oder?

Der bisherige Code ist:
Code:

    h           = findobj('Name', 'Progress Monitoring');
    if isempty(h)
        h           = figure('Units', 'normalized', 'Position', [0 0 0.75 0.75],  'Name', 'Progress Monitoring')
        ...
    else
        figure(h)
        ...
    end

"figure(h)" bringt dabei die Figure in den Vordergrund. Ist das gewünscht oder nützlich?

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

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 11.03.2015, 11:40     Titel:
  Antworten mit Zitat      
Das sich der Plot nach jedem aktualisieren in den Vordergrund schiebt nicht.
Der Plot soll sich aktualisieren und ich will nach Wunsch den Plot von "minimiert" in "Vollbild" holen können.

Bin ein wenig durcheinander...

Der "figure" Befehl erstellt mir doch ein neues Plot-Fenster....
Dieses Plot Fenster wird während der Simulation jedes mal aktualisiert...

Wenn ich aber das "figure(h)" nicht mehr drin habe und es das Fenster nicht schon vorhanden ist wird es doch nicht erstellt...

oder verstehe ich das falsch ?

Sorry, wenn ich gerade ein wenig schwer von begriff bin.
Private Nachricht senden Benutzer-Profile anzeigen
 
Pappok
Forum-Anfänger

Forum-Anfänger



Beiträge: 10
Anmeldedatum: 26.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.03.2015, 17:45     Titel:
  Antworten mit Zitat      
JaSoIstEs hat Folgendes geschrieben:


Wenn ich aber das "figure(h)" nicht mehr drin habe und es das Fenster nicht schon vorhanden ist wird es doch nicht erstellt...

oder verstehe ich das falsch ?



Ich habe das jetzt auch so verstanden
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.03.2015, 18:31     Titel:
  Antworten mit Zitat      
Hallo,

wenn bereits eine figure existiert, dann wird in die aktuelle geplottet. Wenn keine figure existiert, wird eine geöffnet.
Code:
ist eigentlich nur dann nötig, wenn man mehrere Figures hat und von einer zur anderen wechseln möchte, um dort weitere Visualisierungen o.ä. vorzunehmen.

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

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 11.03.2015, 18:53     Titel:
  Antworten mit Zitat      
Während der Simulation/Berechnung sind zwei Figure offen.
Wenn die jetzige Berechnung abgeschlossen ist probiere ich das mal aus und schau was passiert wenn ich das
Code:

entferne.

Wenn ich eine Berechnung starte ist ja in der Regel keine figure offen deswegen hab ich ja in der "else" das
Code:

drin.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.03.2015, 19:42     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wenn die jetzige Berechnung abgeschlossen ist probiere ich das mal aus und schau was passiert wenn ich das figure(h) entferne.

In dem Fall muss an sich nur am Anfang einmalig sichergestellt werden, dass man in der richtigen Figure ist.

Zitat:
Wenn ich eine Berechnung starte ist ja in der Regel keine figure offen deswegen hab ich ja in der "else" das figure(h) drin.

Was aber wie von Jan und mir gesagt unnötig ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.