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

figure dauerhaft als current

 

tim12345

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2015, 09:00     Titel: figure dauerhaft als current
  Antworten mit Zitat      
Hi,

Es geht um ein Simulationsprogramm, welches die Kolbenhubbewegung als Animation darstellt.
Das ganze Programm läuft in Dauerschleife, fragt immer wieder neue Befehle ab und wird erst beendet wenn man "end" eingibt.
Die Kurbelwelle lässt sich rotieren, die Animation läuft in einer gewissen Zeit hab, das heißt eine Umdrehung dauert etwa 5s.

Nun soll ein Diagramm ausgegeben werden - allerdings in einem neuen Figure. Das klappt auch soweit. Einfach ein neues erstellt und dort hineingeplottet.

Jetzt wird das Programm weiter ausgeführt, das zweite Figure soll geöffnet bleiben und die Kurbelwelle soll rotieren. Ich habe das nötige Figure, in dem sich der Kurbeltrieb befindet, davor auf aktiv / current gestellt und wenn jetzt allerdings die Animation abläuft und ich in den 5s, die sie benötigt, mal auf das andere figure mit dem Diagramm klick, kommt eine Fehlermeldung bzw läuft nun die Animation im 2. Figure ab, da dadurch wieder das zweite figure als current gesetzt wird.

Gibt es eine Möglichkeit, das erste Figure als dauer aktiv zu setzen, selbst wenn man das zweite anklickt?

LG und Danke

Tim


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.09.2015, 09:56     Titel:
  Antworten mit Zitat      
Hallo,

üblicherweise löst man das, indem man z.B. bei Plot-Befehlen explizit das Koordinatensystem angibt, in dem geplottet werden soll.

Code:
f = figure;
ax = axes('parent', f);
plot(ax, x, y) % das ax ist das entscheidende


Für genauere Hilfestellung müssten wir wissen, welche Befehle du zur Visualisierung verwendest. Am einfachsten wäre es, wenn du den relevanten Code zur Verfügung stellst.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2015, 11:33     Titel:
  Antworten mit Zitat      
Ok, danke hier ist mal ein kleiner Beispielcode (ist jetzt nicht der Originale, aber tut das Gleiche).

Das, was nicht passieren soll, ist dass wenn ich den Befehl "plotte" eingebe und darauf den Befehl "animation" und während der laufenden Animation das zweite Fenster anklicke, dort dann die Animation fortgesetzt wird. Die soll trotzdessen im ersten Feld bleiben.

Code:

close all;

disp(' ')
disp('--- Programm Start ---')
disp(' ')
disp('animation     startet Animation')
disp('plotte        plottet einen Graphen in neues Fenster')
disp('end           beendet Programm')
disp(' ')

% Grundgerüst
second = figure (2);
first = figure (1);
axis ('equal')
axis ([-2 2 -2 2])

while true
    eingabe = input (sprintf('Hier Befehl eingeben:\t'), 's');
    if strcmp (eingabe, 'animation')
        % lösche vorheriges (damit man neues auch sieht)
        % führe Animation aus
        hold on
        for x = 0 : 360
            plot(sind(x), cosd(x), 'o', 'Color', [randi(10)/10 randi(10)/10 randi(10)/10])
            pause(0.01);
        end
        hold off
    elseif strcmp (eingabe, 'plotte')
        % öffne neues Figure bei "plotte" und zeige Graphen
        figure (second)
        k = 0:0.1:360;
        plot (sind(k), cosd(k));
        figure (first)
    elseif strcmp (eingabe, 'end')
        % beende Programm bei "end"
        disp(' ')
        disp('--- Programm Ende. ---')
        close all;
        break;
    else
        % andernfalls
        disp('Unbekannter Befehl.')
    end
end
 
 
tim12345

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2015, 11:34     Titel:
  Antworten mit Zitat      
Den Kommentar
Code:

% lösche vorheriges (damit man neues auch sieht)
 

kann man überlesen, der ist unnötig, hatte sich erledigt, aber ändert ja am Prinzip nichts Smile

LG Tim
 
tim12345

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2015, 11:37     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

üblicherweise löst man das, indem man z.B. bei Plot-Befehlen explizit das Koordinatensystem angibt, in dem geplottet werden soll.

Code:
f = figure;
ax = axes('parent', f);
plot(ax, x, y) % das ax ist das entscheidende


Für genauere Hilfestellung müssten wir wissen, welche Befehle du zur Visualisierung verwendest. Am einfachsten wäre es, wenn du den relevanten Code zur Verfügung stellst.

Grüße,
Harald


Ok, danke damit funktioniert das. Smile
 
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.09.2015, 12:19     Titel:
  Antworten mit Zitat      
Hallo,

noch eine kleine Usability-Sache:

für den Anwender ist es vermutlich angenehmer, wenn er über menu eine Aktion auswählen kann.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2015, 11:54     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

noch eine kleine Usability-Sache:

für den Anwender ist es vermutlich angenehmer, wenn er über menu eine Aktion auswählen kann.

Grüße,
Harald


Ok danke, werd mal überlegen, es einzubauen Smile
 
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.