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

Workspacedaten im command windows sichtbar machen, GUI

 

Mic83

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2007, 17:21     Titel: Workspacedaten im command windows sichtbar machen, GUI
  Antworten mit Zitat      
Hallo zusammen,

ich schreibe in moment an einem Programm, dass einen Teil eines Ottomotors simuliert und dabei einen Filter verwendet. Diese Filter besitzt mehrere Stellparameter, weshalb ich das Einstellen dieser Parameter im Matlab-Code nicht so schön finde. Ich möchte diese gerne in einem GUI einstellen, das einen Berechnen-Button besitzt.

Meine erste Vorgehensweise war, ein GUI mit samt m-file zu erstellen, und alle Rechenoperationen dort auszuführen. Dabei wird mein Programmcode abllerdings fast ausschließlich in der Callback Funktion des Buttons ausgeführt. Da Matlab ja die dabei entstehenden Werte in einem Workspace dieser Funktion speichert, komme ich später im Command Window nicht mehr an die Daten ran, da hier ja nur Variablen aus dem base WS angezeigt werden. Zur Kontrolle des Programmqualität ist das allerdings zwingend notwendig...

Mein zweiter Ansatz sah auf den ersten Blick schlauer aus, führt aber auch nicht zum ziel. Alle Rechenoperationen im Startskript, dann das Ausführen der GUI-Datei mit dem Berechnen-Button und beim 2. durchlauf mit dem Button wieder das Hauptskript auszuführen..., sah gut aus, bringt allerdings das gleiche Problem Sad

Die einzige mir bekannte Version ist mit assignin alles einzeln in den base-WS zu schreiben und von da zu lesen, was bei mehreren Variablen aber nicht mehr durchführbar erscheint..

Gibts da eine Möglichkeit, wie ich auf einen nicht base WS im Command Window und überhaupt per Klick zugreifen kann (ohne Debugmodus). Oder ist es möglich den Skript-WS in den base-WS zu laden/zu überschreiben. Habt ihr sonst eine Idee wie es gehen könnte??

Gruß
Michael


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 25.09.2007, 17:35     Titel:
  Antworten mit Zitat      
Hallo Mic83,

wenn es nicht zuviele Daten sind, könntest Du sie mit save als .mat-Datei speichern und dann mit load vom Command Window aus wieder einlesen.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Mic83

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2007, 17:47     Titel:
  Antworten mit Zitat      
Hallo,

mit save und load habe ich es auch schon versucht, finde aber keine Möglichkeit, den WS des Skripts in den base-WS zu schreiben...

Gruß
Michael
 
Mic83

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2007, 17:57     Titel:
  Antworten mit Zitat      
Was ich haben möchte ist ja vereinfacht ein Skript, dass komplett im base-WS abläuft, das ist ja an sich kein Problem, die gibts ja erst, wenn ich ein 2. Fenster aufmache und das Programm mit diesem ablaufen lassen will.

Gibts hier vllt eine andere Möglichkeit?

Sowas muss doch irgendwie gehen ^^

bei save und load werden vermutlich später auch die Datenmengen zu groß werden.

einen generellen copy befehl zwischen 2 Stacks gibt es aber nicht, oder?

Gruß
Michael
 
Mic83

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.09.2007, 18:07     Titel:
  Antworten mit Zitat      
also ich "hoffe" die Lsg grad gefunden zu haben.

Wenn ich alle Variablen also global laufen lasse könnte es klappen.

Hab leider nicht allzuviel Programmiererfahrung, daher die Frage, kann mir das vllt andere Probleme bescheren?

Gruß und Vielen Dank!

Michael
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 26.09.2007, 14:42     Titel:
  Antworten mit Zitat      
1.
Zitat:
Gibts da eine Möglichkeit, wie ich auf einen nicht base WS im Command Window und überhaupt per Klick zugreifen kann (ohne Debugmodus).

Du willst aus dem Command Window auf dem Memory Bereich einer Funktion zugreifen? Das ergibt kein Sinn! Wenn Du im Base Workspace bist, dann kann zu diesem gleichem Zeitpunkt kein weitere Prozess laufen, da MATLAB nicht parallelfähig ist. Das heisst zu diesem Zeitpunkt existiert kein andere Memory-Bereich auf den Du zugreifen kannst.

2. Die Ergebnisse einer GUI ins Workspace auszulagern ist auch nicht elegant - macht man nicht. Ausserdem ist es nicht robust und unsicher.
Besser die Daten an den HANDLES-Struct zu hängen. Diese steht in allen Callbackfunktionen zu Verfügung.

schaue in der Doku nach der Funktion GUIDATA. Damit speichert man den aktualsierten Handles-Struct zurücks ins Figure, damit die Änderung nicht verloren gehen.

Des weiteren sind noch folgende Funktionen sehr nützlich
SETAPPDATA
GETAPPDATA
RMAPPDATA
ISAPPDATA



MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2007, 12:16     Titel:
  Antworten mit Zitat      
probier mal:
assignin('base', 'variablenname_in_base', variable)
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 02.11.2007, 17:22     Titel:
  Antworten mit Zitat      
Kenne mich leider mit guis nicht so aus, daher kann ich wenig beitragen. Aber wenn Du alle Variablen in einem struct ablegst myGUI.x, myGUI.y, etc dann kannst Du ja das gesamte struct auf einmal mit assignin umkopieren - dann bleibt der code zumindest übersichtlich und handelbar.
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 03.11.2007, 20:49     Titel:
  Antworten mit Zitat      
Wie Michaela schon gesagt hat, auf jeden Fall struct-Variablen nutzen. Die solltest du dann sowohl in den Workspace schreiben können, als auch direkt nach callback-Durchlauf per Aufruf ohne Semikolon am Ende der Zeile
Code:
myGUI %enthält myGUI.x und myGUI.y

ausgeben lassen - wenn du zur Kontrolle des Programms immer diese Werte sehen musst.

Ich hoffe ich hab das Problem überhaupt richtig erkannt!?

Grüße
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 07.11.2007, 18:38 Uhr von Bijick
Von Programmierung nach GUIs
 
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.