Informatik mit Matlab Labor 6

Ähnliche Dokumente
Graphische Benutzeroberflächen mit Matlab

Mod&Sim II MATLAB/Simulink Praktikum - SS09 P5-1 E. Pankiewicz, HM, FK06 1

Kleine Einführung in den Matlab-GUI-Editor

Informatik Erste Schritte mit MATLAB

Herzlich Willkommen zur Informatik I. Programme in MATLAB. Funktionen schreiben im Matlab. Agenda

15. Einführung in die GUI-Programmierung 1

Zahlreiche Möglichkeiten zum dauerhaften Speichern und Laden von Daten Meist: Speichern in verschiedenen Dateiformaten Anwendungen:

Erste Schritte mit SigmaPlot

White Paper Wählen-Buttons in Excel

Inhaltsverzeichnis. Ulrich Stein. Programmieren mit MATLAB. Programmiersprache, Grafische Benutzeroberflächen, Anwendungen

Ulrich Stein. Einstieg in das Programmieren. mit MATLAB. 2., aktualisierte Auflage. Mit 153 Bildern. Fachbuchverlag Leipzig im Carl Hanser Verlag

Einführung in MATLAB

Python 3.6. Erste Schritte auf dem Mac. Syshack. 22. Juni 2017 Version 2.0. Python Erste Schritte auf dem Mac Syshack, 22.

Ein erstes "Hello world!" Programm

Erstellen von Makros / Textbausteine

Inhaltsverzeichnis. Ulrich Stein. Einstieg in das Programmieren mit MATLAB ISBN: Weitere Informationen oder Bestellungen unter

Rückgabewerte von Methoden

Anleitung zum Umgang:

Arbeiten mit dem VBA-Makro Punkte ein- auslesen

Aufbau und Bestandteile von Formularen. Oracle Forms. Erstellen eines neuen Blocks (1) Starten von Oracle Forms

Hannover: Lebensqualität in der Südstadt

Kurzanleitung für den MyDrive Client

Erstellen von graphischen Ausgaben

Arbeitsblatt 5 EAD II NetBeans

Kurzanleitung für den MyDrive Client

Erste Schritte mit Praat - eine Kurzeinführung. 1. Einstieg. Inhalt. Aufgabe. "Phonetische Transkription I" Stephanie Köser. 1.

3D Visualizer. - Kurzanleitung -

Die Baugruppen der VIPA GmbH sind direkt im Hardwarekonfigurator verfügbar und können so vereinfacht konfiguriert werden.

Ionic 2-Teil bereits mit der IDE Visual Studio Code

JAVA Look & Feel Design Guidelines

Anleitung zur Migration auf Webmail

Bedienungsanleitung Festplattenerweiterung

MODELL EL-9900 RECHNER MIT GRAFIK- FUNKTION BEDIENUNGSANLEITUNG

2 Grundlagen und Grundeinstellungen

GRAITEC FAQ für Autodesk Advance Steel. Wie können bei der Positionierung Präfixe vergeben werden? Positionierung

Handbuch für Redakteure

ManageHomePC v Veröffentlicht 2016 Copyright S-cubic GmbH. Krebsbachstr. 12 D Bergisch Gladbach

Getting Started Conquestor

Numerik-Programm, mittlerweile mit vielen Erweiterungen (Toolboxen) Matlab = Matrix Laboratory Sehr gute Doku (doc, help, lookfor)

Eclipse Tutorial.doc

ZVK - Jahresabrechnung. Handbuch

5.1.1 Dateilinks hinzufügen

DOORS Training IBM Rational DOORS StartUp Training - Modul 4

Erstellen neuer Makros bzw. Öffnen und Anpassen bestehender Makrovorlagen :

ADF kompakt: Workshop zum Einstieg in ADF

Disclaimer mit OK bestätigen und im folgendem Fenster Ihren Usernamen und Passwort eingeben.

4. Desktop, Betriebssystem u.a.

MyFiles - Benutzer-Anleitung

Kurzanleitung. Zitiertil-Creator. Dokumentvorlagen Dokumente Formatvorlagen Format Zeichen Format Absatz

Installation & Einstellungen

Dateien mittels Vorlagen automatisch umbenennen

ProMaSoft.de WordPDFFormular Version (1.083) Seite 1 von 7

vcdm im Wandel Vorstellung des neuen User Interfaces und Austausch zur Funktionalität V

Etiketten-Druck mit Quick Report Design

Access Programmierung. Ricardo Hernández García. 1. Ausgabe, November 2013 ACC2013P

Übung Ionic ToDo-Liste erstellen

Benutzerhandbuch Koala Editor

Vorlesung Informatik II

1. Python Interpreter installieren (WinPython)

Kurzanleitung zur Erstellung eines Reports von ClassiX aus

Einführung in SolidWorks für die Studenten der. Teil 4

HTk: Ein GUI für Haskell

Bedienungsanleitung Festplattenerweiterung. i5s HD. Inhalt: 1. Funktion PLAY Standard MIDI File Funktion COPY FILE... 3

Anleitung zur Installation des GapText-Systems

Structure/Draw: zwischen den Modi wählen (Structure-Modus zum zeichnen von Molekülen, Draw-Modus zum zeichnen von Geräten und Apparaturen)

Einführung in Python/Matplotlib

Einführung in SPSS. Sitzung 2: Datenbereinigung und Datenmanagement. Knut Wenzig. 4. Dezember 2006

Kurzanleitung Hama Photokalender v

Unterlagen zu: Das Datenanalysesystem SAS SS 2000

FreeQDA. Eine freie Software zur Analyse qualitativer Forschungsdaten. Anleitung. von Jörg große Schlarmann. und Dirk Kitscha

Desktop Hintergrund einrichten.

Landis & Gyr (Europe) Corp.

ABC PC-programm. Startfenster ABC PC-Programm: ABC-Server. Erklärung der Symbole

PeakTech Zeitprogramm erstellen über Excel - Beispiel / Timed programs with Excel Example

PowerPoint 2007: Kurzeinführung

b.i.m.m MULTIPUSHTOOL 2013 Benutzerhandbuch b.i.m.m GmbH September 2012 Version

WAGO-WebVisu-App 1/5. Android Bedienungsanleitung. Android User Instruction

1 Zusätzliche Erweiterungen

Netzwerkeinrichtung mypiled PC Applikation

eztour Planner Bedienungsanleitung

Arbeiten mit Acrobat. Vorstellung von Adobe Acrobat Bearbeitung des Dokuments Präsentationen erstellen Teamarbeit

Herausfinden der 'User' von eingegebenen Daten in ProMISe

Bedienungsanleitung Vereinsbuchhaltung. Bedienungsanleitung Appell. Inhalt

DRUCKDATENERSTELLUNG IN MICROSOFT WORD (2010)

Dorico Kurzanleitung

TimeSafe Leistungserfassung

PG5 Starter Training PG5 Core und Webeditor 8 Daniel Ernst DE

Workshop zum Model-Builder

Transkript:

Informatik mit Matlab Labor 6 Aufgabe gui1: Erstellen Sie die die GUI-Fenster, wie sie in der Vorlesung vorgestellt wurden. Modifizieren Sie die Fenster, indem Sie andere GUI-Objekte einbauen. Vorgehen: MATLAB Command Window: >> guide Startdialog von GUIDE: Create New GUI + Blank GUI und OK. Es öffnet sich der GUIDE Layout-Editor: GUI-Element: Push Button: Maus-Klick in der Iconleiste (links auf das oberste Feld der linken Reihe Aufschrift "OK"). Element mit gedrückter linker Maustaste in den Layout-Bereich ziehen. 28.04.2016-1 - Stn / Labor6_Matlab

Abspeichern: Namen gui1.fig. M-File gui1.m: Am Ende der Datei: Kopf der Funktion pushbutton1_callback - Callback-Funktion: Die Callback-Funktion ist noch leer. Erweitern Sie den Callback-Funktionsrumpf mit den unten angegebenen drei Zeilen (neues Grafik-Fensters (figure), Geraden-Plot und Axis- Definition): % --- Executes on button press in pushbutton1. function pushbutton1_callback(hobject, eventdata, handles) % hobject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) figure; plot( [2,5], [1,3] ); axis( [0,8,0,5] ); Zur Erinnerung: Die Köpfe der Callback-Funktionen (hier: function pushbutton1_callback) legt GUIDE bereits automatisch an. Sie müssen nur noch die Befehle im Rumpf der Funktionen hinzufügen, also die drei Zeilen mit den Befehlen figure, plot und axis. Speichern Sie den M-File und schließen Sie alle GUIDE-Fenster. Aufruf im MATLAB Command Window: >> gui1 Test der Funktionalität: Push Button klicken -> Aufruf der Callback-Funktion pushbutton1_callback Vorsicht: Wenn Sie Controls (GUI-Elemente) aus einem Layout löschen, kann es sein, dass die (nun unverknüpften) Callbacks weiterhin im M-File erhalten bleiben. Ein danach eingefügter Push- Button erhält eine fortlaufende Nummerierung, also an Stelle von pushbutton1_callback müssen Sie in diesem Fall pushbutton2_callback verwenden. 28.04.2016-2 - Stn / Labor6_Matlab

GUI-Rückgabewert abfragen bzw. ändern: Im GUI-M-File in gui1_outputfcn die Variable varargout abfragen: varargout{1} = handles.output; Aufruf im Command Window: gui1 mit Rückgabewert: >> h = gui1 h = Figure (figure1) with properties: Number: [] Name: 'gui1' Color: [0.9400 0.9400 0.9400] Position: [135.8000 66.5385 63.2000 17.8462] Units: 'characters' Show all properties Rückgabewert in der gui1_outputfcn ändern varargout{1} = 'Hello GUI'; Aufruf im Command Window: >> h = gui1; h = Hello GUI Aufgabe gui2: Text-Ausgabefeld GUIDE + leeres Layout, "Static Text"-Element in Layout ziehen + Abspeichern unter dem Namen gui2 Im GUI-M-File gibt es keine Callback-Funktion zu Ausgabefeldern. Aufruf: >>gui2 Ausgabe-Text ändern, zwei Möglichkeiten: 1. im Layout fest einen Text eintragen. 2. Textfeld zur Laufzeit mit Text belegen. zu 1.: Aufruf des "Property Inspector" Im Layout-Editor die Maus auf eingebautes "Static Text"-Feld + rechte Maustaste. > Kontext-Menü, u.a. mit Eintrag "Property Inspector" > Dialog mit den Eigenschaften des "Static Text"-Feldes: > Name des Textfeldes 'text1' oder 'text2' im Feld Tag. > Eigenschaft 'String': rechts daneben "Static Text" ändern in "Hello Text-GUI". 28.04.2016-3 - Stn / Labor6_Matlab

Abspeichern + Aufruf: >> gui2 zu 2: im GUI-M-File in der OpeningFcn: % --- Executes just before gui2 is made visible. function gui2_openingfcn(hobject, eventdata, handles, varargin) % Choose default command line output for gui2 handles.output = hobject; % NEU: im Textfeld 'text1' die Eigenschaft 'String' neu setzen % in MATLAB 2015 heißt das erste Text-Feld 'text2'??? set( handles.text1, 'String', 'Hello OpeningFnc' ); % Update handles structure guidata(hobject, handles); % UIWAIT makes gui2 wait for user response (see UIRESUME) % uiwait(handles.figure1); Abspeichern + Aufruf: >> gui2 Text-Eingabefeld GUIDE + "Open Existing GUI" >gui2.fig unterhalb des "Static Text"-Feldes ein "Edit Text"-Feld: "Property Inspector" > Namen im Feld Tag: 'edit1' Abspeichern + M-File gui2.m öffnen: In Callback-Funktion edit1_callback den eingegebenen Text auslesen (get): bzw. txt = get( handles.edit1,'string' ); txt = get( hobject,'string' ); Text (in der Variablen txt) mit set in das Static-Text-Feld (text1) schreiben: function edit1_callback(hobject, eventdata, handles) txt = get( hobject,'string' ); set( handles.text1, 'String', txt ); % in MATLAB 2015 ist Tag: 'text2' Abspeichern + Aufruf: >> gui2 Test mit Eingabe in Edit-Feld + Eingabetaste 28.04.2016-4 - Stn / Labor6_Matlab

Aufgabe gui3: GUI-Grafikobjekt GUIDE + leeres Layout. Grafikobjekt Axes Abspeichern gui3 + Aufruf: >> gui3 3D-Grafik: surf-daten erzeugen in der OpeningFcn. als Fläche "sin(r) / R": function gui3_openingfcn(hobject, eventdata, handles, varargin) % Grafik in aktuelle Axes zeichnen [X,Y] = meshgrid(-8:.5:8); R = sqrt(x.^2 + Y.^2) + eps; handles.z = sin(r)./r; surf(handles.z) % Choose default command line output for gui3 handles.output = hobject; % Update handles structure guidata(hobject, handles); neues GUI-Objekt - Pop-up-Menü, unterhalb der Axes platzieren. Auswahl-Möglichkeiten im Pop-up-Menü > Property Inspector + "String" : > Eintrag der Texte "surf" und "mesh": 28.04.2016-5 - Stn / Labor6_Matlab

Callback-Funktion zum Pop-up-Menü popupmenu1_callback: function popupmenu1_callback(hobject, eventdata, handles) % Nummer des ausgewählten Menü-Eintrags val = get( hobject, 'Value' ); % Liste der Texte im Pop-up-Menü str = get( hobject, 'String' ); % Text zu ausgewähltem Menü-Eintrag switch val end % Eintrag surf wurde ausgewählt -> Darstellung surf case 1 surf(handles.z); % Eintrag mesh wurde ausgewählt -> Darstellung mesh case 2 mesh(handles.z); Abspeichern + Aufruf: >> gui3 Test: im Pop-up-Menü zwischen den Darstellungen surf und mesh umschalten Erweiterungen Bauen Sie in Ihr Layout noch weitere Controls ein und testen Sie deren Verhalten bei einer Anwahl. Die automatisch erzeugten Callback-Funktionen im M-File erhalten bereits kurze Hilfen, wie man die Daten der Controls auslesen bzw. setzen kann, z.b. bei einer Listbox steht: % Hints: contents = get(hobject,'string') returns listbox1 contents as cell array % contents = get(hobject,'value') returns selected item from listbox1 Mit set( hobject, 'String', var ) können Sie Werte in einer Listebox setzen, wobei var eine Cell-Array-Variable ist, die spaltenweise die EInträge der Listbox enhält, z.b. var(1,1) = { 'Eintrag 1' }; var(1,2) = { 'String 2' }; var(1,3) = { 'String 3' }; set( handles.listbox1, 'String', var ); % oder in der OpeningFnc setzen Mit get( hobject, 'String' ) erhalten Sie alle Einträge der Listbox, mit get( hobject, 'Value' ) die Nummer, die mit der Maus in der Listbox angewählt wurde. Hinweis: Die Beschriftung der Achsen können Sie ausschalten über den Befehl set( gca, 'XTick', [] ) set( gca, 'YTick', [] ) bzw. den analogen Eintrag im Property Inspector. 28.04.2016-6 - Stn / Labor6_Matlab

Aufgabe gui3: Menü-Erweiterung Erstellen Sie GUI-Menüs, wie unten und in der Vorlesung vorgestellt. Modifizieren Sie die Fenster, indem Sie andere GUI-Objekte einbauen. GUI-Menüs 1. Menu Bars, als Drop-down Menüs am oberen Ende des GUI-Fensters 2. Context Menüs, mit einem Klick der rechten Maustaste. zu 1.: GUIDE + öffnen von gui3 aus Labor 1. Drop-down-Menü "Tools" + "Menu Editor": Tab "Menu Bar" + Icon "New Menu": Eintrag "Untitled 1" ändern > Eigenschaft "Label" in "Datei" und > Eigenschaft "Tag" in "datei_menu": + OK Untereintrag zum Eintrag "Datei" > Icon "New Menu Item" (rechts neben Icon "New Menu"). Ändern Eigenschaft > "Label" in "Beenden" und > "Tag" in "datei_menu_ende": > Weiterer Eintrag "Ansicht" über "New Menu" zum "Tag" "ansicht_menu", mit den "Menu Items" "surf" und "mesh" > und Eintrag "Hilfe" zum "Tag" "hilfe_menu" mit dem "Menu Item" "Info". Wählen Sie die Tags zu den Items entsprechend: 28.04.2016-7 - Stn / Labor6_Matlab

Vollständiges Menü: Abspeichern und Aufruf: >> gui3 noch keinerlei Aktionen es fehlen noch die zugehörigen Callbacks: Callback-Funktionen im M-File "gui3.m" : Aktionen für Items "surf" und "mesh": Umschalten der Darstellung über surf- bzw. mesh-aufruf. Zusätzlich Wert in "popupmenu1" auf aktuellen Wert "Value" umschalten: 1 für "surf" und 2 für "mesh": function ansicht_menu_surf_callback(hobject, eventdata, handles) surf(handles.z); % Wert ebenfalls im Pop-up Menu ändern set( handles.popupmenu1, 'Value', 1 ); function ansicht_menu_mesh_callback(hobject, eventdata, handles) mesh(handles.z); % Wert ebenfalls im Pop-up Menu ändern set( handles.popupmenu1, 'Value', 2 ); Abspeichern und Aufruf: >> gui3 Menü-Item "Beenden": Aufruf "delete" für das gesamte GUI-Fenster: function datei_menu_ende_callback(hobject, eventdata, handles) delete(handles.figure1); Menü-Item "Info" soll weiteres GUI-Fenster öffnen, Informationen über das Programm. Versuchen Sie sich selbst einmal daran. 28.04.2016-8 - Stn / Labor6_Matlab

Zu 2.: "Context Menü". Axes-Bereich der 3D-Grafik mit solch einem Menü mit Klick der rechten Maustaste aktivierbar "Menu Editor" in GUIDE + "Tools". Tab "Context Menus" auf Icon "New Context Menu": > Eigenschaften Tag "axes_context_menu" + zwei Items "surf" und "mesh" mit Tags "Menu Editor" schließen Definition, zu welchem GUI-Objekt das Context-Menü gehört. Selektieren Sie im "Layout Editor" von GUIDE das Object "axes1" und Aufruf "Property Inspector": > Eintrag "UIContextMenu" und Klick auf das Icon rechts daneben, Auswahl "axes_context_menu" Callbacks zum Context-Menü im M-File "gui3.m" : function surf_item_callback(hobject, eventdata, handles) surf(handles.z); % Wert ebenfalls im Pop-up Menu ändern set( handles.popupmenu1, 'Value', 1 ); function mesh_item_callback(hobject, eventdata, handles) mesh(handles.z); % Wert ebenfalls im Pop-up Menu ändern set( handles.popupmenu1, 'Value', 2 ); Hinweis: Zur Callback-Funktion eines Menüeintrags kommen Sie auch direkt, wenn Sie im Menu Editor auf den Button View, rechts unten neben dem Callback-Eingabefeld, klicken. 28.04.2016-9 - Stn / Labor6_Matlab

Aufgabe Standard-Dialoge Experimentieren Sie mit den in MATLAB vorhandenen Standard-Dialogen: msgbox Erzeugt die Ausgabe einer einfachen Meldung warndlg Erzeugt die Ausgabe einer Warnungs-Meldung errordlg Erzeugt die Ausgabe einer Fehler-Meldung helpdlg Erzeugt die Ausgabe eines Hilfe-Textes questdlg Erzeugt einen "Ja-Nein-Abbruch" - Abfrage-Dialog inputdlg Erzeugt einen Dialog zur Eingabe eines Textes uiputfile Startet einen Dialog zur Auswahl einer Datei zum Speichern uigetfile Startet einen Dialog zur Auswahl einer Datei zum Lesen uigetdir Startet einen Dialog zur Auswahl eines Verzeichnisses (mit Pfad) printdlg Startet einen Druck-Dialog für die aktuelle figure uisetcolor Startet den Farb-Dialog zur Auswahl einer RGB-Farbe Das Aussehen dieser Dialoge kann über Parameter verändert werden, z.b.: >> msgbox( 'Das Ergebnis ist 42.' ); >> errordlg( 'Alles im Eimer!!!'); >> a = questdlg('schluss jetzt?','frage','ja','nein','ja') a = Ja Rückgabe: Name des Buttons, der als Antwort gedrückt wurde, hier 'Ja'. >> n = inputdlg( 'Name: ') n = 'Willy' % Rückgabe: Text im Eingabefeld, hier 'Willy'. Auswahl einer Datei zum Abspeichern uiputfile: >> f = uiputfile f = gui3.m uisetcolor Farb-Dialog zur Auswahl einer RGB-Farbe: >> uisetcolor ans = 0 1.0000 0.5020 Schreiben Sie die Funktion writetext(), die folgende Aktionen durchführt: Auswahl einer Datei zum Abspeichern mittels uiputfile: f = uiputfile; Öffnen Sie die Datei zum Schreiben und schreiben Sie folgenden Text in die Datei: Ach, armer Yorick! - Ich kannte ihn, Horatio, ein Bursche von unendlichem Humor Vergessen Sie nicht, die Datei am Ende wieder zu schließen. Ablauf: fid = fopen( f, 'w' );... fprintf( fid, '...' );... fclose( fid ); 28.04.2016-10 - Stn / Labor6_Matlab

Zusatzaufgabe: Maus- und Tastatur-Aktion Durch Maus-Picks werden die Endpunkte von geraden Linien definiert. Ein neues GUI-Projekt guicad0, mit einem Axes-Objekt axes1 für die Grafikausgabe und die Maus-Klick-Aktion: Die Maus-Klick-Aktion soll durch den Druck der Taste g (Gerade) gestartet werden. Positionieren Sie die Maus im Layout, ohne das axes-objekte im Fokus zu haben, und rufen Sie über die rechte Maustaste das Context-Menü zum gesamten GUI-Fenster auf. Wählen Sie unter View Callbacks den Eintrag KeyPressFcn. Im M-File guicad.m wird dadurch die Callback-Funktion figure1_keypressfcn erzeugt. Jetzt bekommen wir über einen Callback mitgeteilt, wenn eine Taste gedrückt wird. Das zur Taste gehörende Zeichen kann über die Abfrage der figure-eigenschaft 'CurrentCharacter' ausgelesen werden: % Executes on key press over figure1 with no controls selected. function figure1_keypressfcn(hobject, eventdata, handles) % Zeichen zur gedrückten Taste in Variable c speichern c = get( hobject, 'CurrentCharacter' ); Testen Sie, ob das in der Variablen c gespeicherte Zeichen dem Buchstaben g entspricht. Ist dies der Fall, starten Sie die Maus-Pick-Aktion über ginput, die die x- und y-koordinate des gepickten Punktes zurückgibt: % Einen Punkt mit der Maus auswählen und % die x-koordinate des Punktes an x1, y-koordinate an y1 zurückgeben [x1,y1] = ginput(1); Analog wird der zweite Endpunkt der Geraden [x2,y2] mit einem weiteren ginput-aufruf gepickt: [x2,y2] = ginput(1); Erstellen Sie nun eine Linie zwischen den beiden Punkten durch Aufruf der Funktion plot, analog den Grafik-Beispielen. 28.04.2016-11 - Stn / Labor6_Matlab