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

Guideoberfläche geöffnet lassen...

 

123456
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2009, 14:08     Titel: Guideoberfläche geöffnet lassen...
  Antworten mit Zitat      
Hallo,

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

Gruß

123456
Private Nachricht senden Benutzer-Profile anzeigen


LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2009, 13:43     Titel:
  Antworten mit Zitat      
Hallo,

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.

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2009, 08:40     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Fragewurm
Forum-Century

Forum-Century


Beiträge: 180
Anmeldedatum: 23.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2009, 09:10     Titel:
  Antworten mit Zitat      
Hi
es gibt Befehle wie
Code:

die zum aktuallisieren da sind.
Was aber möchtest du aktuallisieren?
Ein axes-Element(plot), Listen,......

Gruss
Fragewurm
_________________

Fehler jeglicher Art Dienen zur allgemeinen Belustigung
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2009, 09:29     Titel:
  Antworten mit Zitat      
Hab über
Code:
set(handles.r1,'String',num2str(ks(1,2)));


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.
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2009, 14:17     Titel:
  Antworten mit Zitat      
Hallo,

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?

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2009, 08:27     Titel:
  Antworten mit Zitat      
Ein Beispiel zu posten wird eher schwer...!!!

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 Laughing

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.

Danke für die viele Mühe!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2010, 11:13     Titel:
  Antworten mit Zitat      
Hallo,

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.
Code:

h = gcf;
myhandles = guihandles(h);

set(myhandles.edit1,'String',x)
set(myhandles.edit2,'String',y(1,2))
set(myhandles.edit3,'String',y(2,2))
set(myhandles.edit4,'String',y(3,2))
set(myhandles.edit5,'String',y(4,2))
set(myhandles.edit6,'String',y(5,2))
set(myhandles.edit7,'String',y(6,2))
set(myhandles.edit8,'String',y(7,2))
set(myhandles.edit9,'String',y(8,2))
set(myhandles.edit10,'String',y(9,2))
set(myhandles.edit11,'String',y(10,2))
set(myhandles.edit12,'String',y(11,2))
 


Das Problem ist die Gui öffnet aber die Editfelder werden nicht erneuert. Erst nach dem Abbruch der Berechnung sehe ich den aktuellen Stand.

Weiß dazu jemand Rat?
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2010, 08:18     Titel:
  Antworten mit Zitat      
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;

% Update handles structure
guidata(hObject, handles);

tic
%text = varargin(1)
ts = cell2mat(varargin(1));  
ks = cell2mat(varargin(2));
%set(handles.edit1, 'String',text)
set(handles.edit1,'String',num2str(ts(1)));
set(handles.edit2,'String',num2str(ks(1,2)));
set(handles.edit3,'String',num2str(ks(2,2)));
set(handles.edit4,'String',num2str(ks(3,2)));
set(handles.edit5,'String',num2str(ks(4,2)));
set(handles.edit6,'String',num2str(ks(5,2)));
set(handles.edit7,'String',num2str(ks(6,2)));
set(handles.edit8,'String',num2str(ks(7,2)));
set(handles.edit9,'String',num2str(ks(8,2)));
set(handles.edit10,'String',num2str(ks(9,2)));
set(handles.edit11,'String',num2str(ks(10,2)));
set(handles.edit12,'String',num2str(ks(11,2)));
t=toc
 


In dem M-file rufe ich die GUI auf und halte diese mit gcf geöffnet
Code:

dieGUI(qx,y);
h = gcf;
myhandles = guihandles(h);
 


um dann die Editefelder innerhalb ein for-Schleife so zu ändern
Code:

set(myhandles.edit1,'String',qx)
set(myhandles.edit2,'String',y(1,2))
set(myhandles.edit3,'String',y(2,2))
set(myhandles.edit4,'String',y(3,2))
set(myhandles.edit5,'String',y(4,2))
set(myhandles.edit6,'String',y(5,2))
set(myhandles.edit7,'String',y(6,2))
set(myhandles.edit8,'String',y(7,2))
set(myhandles.edit9,'String',y(8,2))
set(myhandles.edit10,'String',y(9,2))
set(myhandles.edit11,'String',y(10,2))
set(myhandles.edit12,'String',y(11,2))
 


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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Lord nibbler

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2010, 08:30     Titel:
  Antworten mit Zitat      
Hallo,

Probier mal
Code:

in die Schleife direkt nach dem set-Block einzufügen.

Gruß Lord nibbler
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2010, 08:37     Titel:
  Antworten mit Zitat      
Super vielen Dank, das klappt.

Hab mich schon mit refresh und redraw rumgeschlagen hat aber alles nichts gebracht...

Sehe auch grade das das schon jemand vorgeschlagen hatte...Very Happy

nächste mal passe ich besser auf...
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 - 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.