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

Static text auslesen und in Funktion nutzen

 

Dodge

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2018, 15:38     Titel: Static text auslesen und in Funktion nutzen
  Antworten mit Zitat      
Hi Leute,

bin relativ neu in der MatLab Programmierung und finde zu meinem derzeitigen Problem keine klare Lösung.

Ich habe zuvor ein Skript bzw. mittlerweile eine Funktion geschrieben, welche 2 Eingabeparameter benötigt. Zu dieser Funktion soll nun eine GUI erstellt werden, in der die beiden Parameter gesetzt werden. Dieser Schritt klappt auch so, wie ich mir das vorgestellt habe.

Ich habe zum einen den Parameter, in dem der Dateipfad angegeben wird (von der Datei, über die die Funktion laufen soll). Der Dateipfad wird anschließend in ein Static Text übergeben.

Zum anderen dann noch einen Zahl als Parameter die zwischen 1-26 liegt, welche durch einen Slider gesetzt wird und im nachhinein in ein Static text feld übergeben wird.

Nachdem diese beiden o.g. Parameter vom Benutzer gefüllt wurden möchte ich auf einen Button klicken, welcher dann meine Funktion mit beiden Parametern ausführt.

Als Antwort der Funktion wird am Ende eine Matrix ausgegeben, welche später durch imagesc visualisiert werden soll. Hierfür existiert bereits ein Koordinatensystem, an welches ich dann den befehl imagesc(antwortmatrix) geben möchte.

Mir fehlt es leider an entsprechender Erfahrung mit dem Hin und Hergeben von Daten in GUIDE.

Kann mir jemand einen Tipp geben, wie ich das jeweilige Feld auslese und übergebe?

Hoffe mein anliegen ist nicht zu viel verlangt. Gerne nehme ich auch Verweise auf andere Beiträge an.

Danke im Vorraus!

Unbenannt.JPG
 Beschreibung:
Hier nochmal die GUI als Bild

Download
 Dateiname:  Unbenannt.JPG
 Dateigröße:  30.34 KB
 Heruntergeladen:  326 mal


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.06.2018, 16:41     Titel: Re: Static text auslesen und in Funktion nutzen
  Antworten mit Zitat      
Hallo Dodge,

Das Teilen von Daten zwischen Callbacks, ist zum Glück recht einfach: Du kannst Daten in die UserData eine GUI-Elements oder die Figure schreiben, oder in die ApplicationData. Letzteres wird auch per guidata und dem "handles" Struct gemacht. Welche Methode man bevorzugt, ist Geschmackssache. Wenn Du mit GUDIE arbeitest, wäre der handles Struct naheliegend:
Code:
function OpeningFcn
handles.NewData = 'default';
guidata(hObject, handles);
end

function AnyCallback(hObject, EventData, handles)
handles.NewValue = 'xyz';  % Set the new values, e.g. by:
% handles.NewValue = get(hObject, 'String');
% when this is the static text field

% Now store the modified handles struct in the figure again:
guidata(hObject, handles);
end

function anyOtherCallback(hObject, EventData, handles)
disp(handles.NewValue)
end

Wenn Du also in einem Callback |handles.xyz| definierst und danach den struct per guidata in der Figure speicherst, ist der Wert in den anderen Callbacks auch im handles struct zu finden.

Im Callback des Buttons würdest Du dann die beiden Werte auslesen.

Eine Alternative wäre, direkt auf die Inhalte der Objekte zuzugreifen:
Code:
function Button1_callback(hObject, EventData, handles)
FileName = get(handles.Edit1, 'String');
Slider     = get(handles.Slider1, 'Value');
...

Aber das hat den Nachteil, dass eine spätere Änderung des GUI komplizierter wird, da man die Inhalte mehrere Callbacks zusammen ändern muss. Bei 5 GUI-Elementen ist das kein ernstes Problem, aber es gibt ja auch große GUIs mit 100 Elementen. Dann ist es nützlich, sich nicht auf die speziellen Felder "Slider1" und "Edit1" festzulegen, sondern in den Callbacks der GUI-Elemente die Daten in Felder des structs "handles" zu schreiben, die eindeutige Namen haben. Vergleiche:
Code:
handles.FileName
get(handles.Edit1, 'String')

Beim ersten ist auf Anhieb klar, was die Daten bedeuten, beim zweiten muss man sich erstmal das Layout des GUI anschauen und suchen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Dodge

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2018, 18:28     Titel: Re: Static text auslesen und in Funktion nutzen
  Antworten mit Zitat      
Hi Jan,

also ich muss sagen.. vielen vielen Dank Smile
habe viele Codes durchgelesen und konnte es nicht vollständig interpretieren. Deine kurze Erklärung hat mir jetzt die entsprechenden Lücken gefüllt. Sehr gut!

Habe mich übrigens für diese Methode:
Code:

...
FilterValue = get(handles.filterNumber, 'String');
n = str2double(FilterValue);
FilterPath = get(handles.filePath, 'String');
MeineFunktion(n, FilterPath)


entschieden. Werde die/das GUI auch vorerst nicht großartig verändern aber für kommende Programme wird die erste Methode vermutlich nützlich sein.

Nochmals - Danke Jan. Wird mir viel Arbeit mit händisch kopierten FilePaths abnehmen Very Happy

MfG

Dodge
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.06.2018, 11:08     Titel: Re: Static text auslesen und in Funktion nutzen
  Antworten mit Zitat      
Hallo Dodge,

Aber gerne! Very Happy

Gruß, Jan
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 - 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.