ich habe mir über den Guide eine Oberfläche erzeugt die Berechnungschritte in verschieden Matrizen darstellt.
Zu Beginn der Berechung öffnet sich das Fenster und zeigt den ersten Schritt an. Bei der Berechnung des nächsten Schritts wird das Fenster ja wieder geschloss und dann wieder geöffnet um den aktualisierten Status darzustellen. Daurch wird der Ablauf der Berechnung aber wesentlich langsamer.
Gibt es eine Möglichkeit das die Oberfläche geöffnet bleibt und sich trotzdem aktualisiert...???
Du hast leider etwas wenig Informationen darüber geliefert wie Du das Ganze programmiert hast und was "aktualisierten Status darstellen" bedeutet. Prinzipiell kannst Du mit Hilfe von get und set Eigenschaften von Objekten auslesen und neue Werte setzen. Dazu muss das Fenster nicht geschlossen und neu geöffnet werden.
Ok, ich versuch ein bischen eindeutiger zu beschreiben!
Im Endeffekt ist das Programm aufgebaut aus vielen verschiedenen Matrizen, die aufgrund von verschiedenen Bedingungen mit Zahlen belegt werden. Nun wird mit der im Guide erzeugten Oberfläche jede Matrize dargestellt und soll den Verlauf der Zahlen durch die einzelnen Matrizen besser visualisieren. Das ganze klappt auch. Die Oberfläche wird im Programm aufgerufen und zeigt dann den Durchlauf der Zahlen.
Da aber jede Sekunde ein Berechnungschritt bzw. ein Programmdurchlauf stattfindet wird die Darstellung über die Oberfläche aktualisiert. Und dieser Aktualisierungsschritt findet dann durch ein schließen der alten und öffnen der neuen Darstellung statt. Also wird sozusagen ja jede Sekunde die Oberfläche neu geöffnet, so dass es aussieht als sei sie die ganze zeit offen. Das möchte ich aber gerne verhindert wissen, da dadurch die Berechnung erheblich langsamer wird.
Hoffe das ist ein bischen eindeutiger. Hab leider wenig Erfahrung mit der Verwendung von Guideoberflächen.
jede Position der Matrizen visualisiert. Also zeigt die Oberfläche bei einer 3x3 Matrix 9 kleine Felder in denen dann Zahlen durchlaufen. Die Oberfläche wird am Ende jedes Durchlaufs im Hauptprogramm angesprochen und soll nach jedem Durchlauf aktualisiert die Felder zeigen. Nun sollen aber nur die Felder aktualisiert werden und nicht die komplette Oberfläche.
z.B. ist es so ja nicht mal möglich die Guideoberfläche zu verschieben oder zu minimieren, da sie dann sofort wieder aufgerufen wird.
also wenn Du mit set arbeitest kannst Du ja bestimmen, welche Teile der GUI sich ändern sollen. Und das Fenster wird dadurch ja nicht geschlossen und wieder geöffnet. Kannst Du ein Minimalbeispiel posten, wo man das Problem sieht?
Ich versuchs noch mal anders (das Problem ist einfach auch, ich kann es schwer erklären weil ich selber wenig vertraut bin mit dem Erstellen von Guideoberflächen).
Also um das ganze Programm liegt eine for- Schleife die einen Echtzeitablauf simuliert. Als letzter Aufruf in dieser Schleife wird die Oberfläche angesprochen. Nun ist es so, dass ich aufgrund der schnelligkeit, die laufgeschwindigkeit der Schleife durch eine variabele schneller gemacht habe (´z.B.: 1/10000 Sekunde). Durch den ständigen Aufruf der Oberfläche wird die Durchlaufgeschwingkeit jedoch sehr langsam. Zwar immer noch schneller als eine normale Sekunde aber bei etwa 70000 sec erwarteter Durchlaufzeit eine zu lange Dauer um sich das ganze anzuschauen
Habe mal gehört, dass das ganze schneller läuft wenn nur die handles beim zweiten Aufruf angesprochen werden. Es ist aber nicht ganz klar wie das funktionieren soll.
hab eine erneute Frage zu diesem Thema. Und zwar öffne ich die GUI im M-File. Das M-File ist eine große for-Schleife und die Editfelder sollen immer wieder erneuert werden bei den Durchläufen durch das File.
Ich Versuch noch ein bischen deutlicher zu machen vielleicht kommt dann Hilfe. Der Code der GUI ist
Code:
% --- Executes just before dirkGUI is made visible. function dieGUI_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to dirkGUI (see VARARGIN)
% Choose default command line output for dieGUI
handles.output = hObject;
Leider werden die Editfelder nicht aktualisiert, aber die Werte werden übergeben. Nach Abbruch der Berechnung zeigt mir die GUI den aktuellen Stand. Warum nicht während der Berechnung.
Hab mich schon mit refresh und redraw rumgeschlagen hat aber alles nichts gebracht...
Sehe auch grade das das schon jemand vorgeschlagen hatte...
nächste mal passe ich besser auf...
Einstellungen und Berechtigungen
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
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.