Kleine Einführung in den Matlab-GUI-Editor Um den Einstieg in den GUI-Bereich von Matlab ein wenig zu erleichtern, bespreche ich hier ein kleines Beispielprogramm. Es soll die vollen Stunden der Uhrzeit nach deutscher Lesart (also z.b. 15 Uhr) in die nordamerikanische (also in diesem Fall 3 pm) umwandeln. Keine große mathematische Aufgabe, aber für eine Einführung völlig ausreichend. Einführung in das Problem Es gibt im anglo-amerikanischen Sprachgebrauch kein Äquivalent zu den deutschen Stundenbezeichnungen ab 13 Uhr. Man unterschiedet stattdessen zwischen a.m. (ante meridiem, zwischen 00:00 Uhr und 11:59 Uhr) und p.m. (post meridiem, zwischen 12:00 Uhr und 23:59 Uhr). Um also das deutsche 13 Uhr auszudrücken müsste man den Ausdruck 1 p.m. gebrauchen. Dies wollen wir nun in ein kleines Programm fassen. Mathematische Vorüberlegungen Ein einfacher Weg um an die erwünschte Umrechnung zu gelangen ist einfach 12 Stunden vom vorgegebenen Wert abzuziehen. Uhrzeit Neu = Uhrzeit alt 12h Das Problem hierbei ist natürlich, dass bei Eingabe eines Wertes vor 13 Uhr (also z.b. 8 Uhr oder 12 Uhr) ein falscher Wert ausgegeben wird. 4Uhr = 8Uhr 12h Dies ist natürlich Unfug und muss später im Programm durch geeignete Mittel verhindert werden. Der Matlab-Code Um den vorher erwähnten Fehler zu vermeiden, werden wir eine Abfrage in unseren Code einbauen.
if ud >= 13 end Wir haben nun 2 Variablen definiert. Die Variable ud beschreibt die deutsche Uhrzeit, uns die zwischengespeicherte (warum wir sie zwischenspeichern kommt ein wenig später) nordamerikanische Uhrzeit. Außerdem wurde eine Bedingung eingebaut. Sie fragt ab, ob der Eingegebene Wert gleich oder größer 13 ist. Trifft dies zu, wird die Berechnung darunter bis zum end ausgeführt. Wenn nicht, wird dieser Teil einfach übersprungen. Wir erweitern dies nun ein wenig und teilen dem Programm mit was geschehen soll, wenn der Eingabewert nicht gleich oder größer 13 ist. if ud >= 13 else uns = ud end Ist der Wert kleiner 13, soll ganz einfach der Eingabewert übernommen werden, denn 8 Uhr ist z.b. einfach 8 a.m.. Das else bedeutet soviel wie ansonsten. Tue dies, ansonsten das andere. Bei uns: Ziehe 12 ab wenn der Eingabewert 13 oder höher ist, ansonsten belasse den Wert. Der GUI-Editor Wir starten den Editor mit der Eingabe von guide im Matlab-Command-Window. Wir wählen Blank GUI und fahren fort. Nun müsste dieses Fenster erscheinen:
Es ist der GUI-Editor von Matlab. Um nun unser kleines Programm zu vervollständigen, erzeugen wir nun drei Dinge. Zum ersten ein Eingabefeld, zum zweiten ein Textfeld zur Ausgabe und drittens einen Button oder Knopf, der die Berechnung startet. Um dies zu tun wählt man im Werkzeugfeld auf der linken Seite einfach die gewünschte Funktion aus und zieht sie im Haupteingabefeld per Mausklick groß. Es sollte nun ungefähr so aussehen:
Wir sehen ein Eingabefeld (relief-artig), ein Textfeld (blank) und einen Button ( Uhrzeit umrechnen ). Passen wir nun die zwei Textfelder an. Zuerst führen wir einen Doppelklick auf das Eingabefeld aus. Wir sehen, dass sich der Inspector öffnet. Ihn ihm können wir das ausgewählte Feld konfigurieren. Zwei Dinge sollten sie nun ändern. Zum einen den Tag, den Namen des Feldes. Wählen sie einen Namen, den sie später leicht wiederfinden. Wir nehmen für dieses Beispiel den Namen edit1. Zusätzlich ändern wir den Wert String und löschen den Inhalt, so dass das Feld von nun an leer ist. Mit dem Textfeld verfahren wir gleich. Wir schliessen den Inspector und führen einen Doppelklick auf das Textfeld aus. Wir geben ihm den Tag text1 und löschen den String. Speichern wir nun unsere Fortschritte. Nachdem sie dies getan haben, müsste sich im Matlab-Text-Editor automatisch das zugehörige m-file geöffnet haben. Schauen wir es uns an. Es gibt einen Header und einige Funktionsaufrufe. Die sollen uns jetzt nicht weiter stören. Wir gehen zum Eintrag pushbutton1_callback. Hier wird definiert, was passiert wenn wir den Button drücken. Zuerst müssen wir natürlich die Eingabe aus dem Eingabefeld abfragen: ue = get(handles.edit1, String ); Mit get holen wir den String aus dem Feld edit1, das wir zuvor umbenannt haben. Dieser String heisst nun ue. Da wir aber aus dem Eingabefeld einen String, also keine Zahl an sich bekommen, müssen wir sie noch umwandeln: ud = str2num(ue) Hierbei ist str2num der Befehl um einen String in eine Zahl, die wir für Berechnungen nutzen können, umzuwandeln. Nun zum Rest: if ud >= 13 uns = num2str(uns) set(handles.text1, String,[uns pm ]); else uns = ud uns = num2str(uns) set(handles.text1, String,[uns am ]);
end Es ist im Grunde der gleiche Code wie im Kapitel Der Matlab-Code. Hinzugefügt wurde lediglich der set -Befehl, sowie der Befehl num2str. Der set -Befehl übergibt den String uns (wir haben ihn ja eine Zeile vorher mit num2str wieder von einer Zahl in einen String verwandelt) an text1, unser Ausgabe-Text-Feld. Zusätzlich wird das Wort am bzw. pm angefügt. So ist uns eine Variable, die von set ausgelesen wird und am, bzw. pm ein fester String. Sie können nun speichern und ihre erste GUI testen. Viel Spaß!