The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI &...

25
The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: [email protected] Room W311g 2008m

Transcript of The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI &...

Page 1: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

The Hong Kong Polytechnic UniversityIndustrial Centre

1

MatLABLesson 9 : Introduction to GUI & Revision

Edward Cheung

email: [email protected]

Room W311g

2008m

Page 2: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

2

Graphical User Interface

• GUI is the point of contact for human machine interface

• GUI incorporates objects such as Windows, icons, buttons menus and text

• Selecting or activating these objects causes the generation of an input event

• Application that provides GUI are more user friendly and easier to learn and use compare with command line interface (CLI)

• Simple GUI Output - Display Message Box Example

>>msgbox('Hello')

Page 3: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

3

Default Dialog Boxes

>>% a default warning box

Warndlg

Other default warning boxes are:-

errordlg

helpdlg

warndlg

Page 4: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

4

questdlg

• Create and display question dialog box• Syntax:-

button = questdlg('qstring','title','str1','str2','default')

• The dialog has three default buttons, Yes, No, and Cancel.>>answer=questdlg('Continue?');

• Example:>> question='Do you want to continue?';>> answer=questdlg(question,'Game Over','Yes','No','Help','Yes');

Page 5: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

5

Cell arrays

• An array in which each element is a cell or bin

• Each cell can contain an array or any data type

• Group data sets that are related but with different dimensions

• Mathematical operations on cell array must be addressed to the contents of a cell

• Curly brackets {} is the cell array constructor and straight brackets [] is the standard array constructor

Example:-Create & access a cell array with 4 elements:->> A=[1 2 3;4 5 6;7 8 9];B=2+5j; C=1:5; D=['A 2x2 Cell Array‘];% example continue on next page

Page 6: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

6

Example on Cell Array>> AA={A B; C D} % Form Cell Array with 4 elementsAA = [3x3 double] [ 2.0000+ 5.0000i] [1x5 double] 'A 2x2 Cell Array'>> AA{1} % get first element of AAans = 1 2 3 4 5 6 7 8 9>> AB={AA pi} % Form Cell Array AB with AA & piAB = {2x2 cell} [3.1416]>> AB{1}(1,1) % a mixture of brackets to address elementsans = [3x3 double]>> AB{1}{1,1} % get first element of AAans = 1 2 3 4 5 6 7 8 9% can use celldisp function to show entire array

Page 7: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

7

Structure Array

• Use much like a database

• Similar to cell array, instead of using indexing methods as in other MatLab arrays, we can address the elements by field name

• Information in the structure array can be access using the array name, field name and the index number

• Stucture field names must begin with a letter and are case sensitive

• In MatLab, only Cell array and structure array can be used to manipulate a mixture of different data types

Page 8: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

8

Structure Array

• Example:- Define a structure array using elements in last example.>> new_stru.matA=A;>> new_stru.strD=D;>> new_stru.complexB=B;>> new_stru.vectorC=Cnew_stru = matA: [3x3 double] strD: 'A 2x2 Cell Array' complexB: 2.0000+ 5.0000i vectorC: [1 2 3 4 5]

Page 9: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

9

inputdlg

• Create input dialog box

• Answer=inputdlg(prompt,title,lineNo,DefAns)

• lineNo specifies the number of lines for each user entered value. lineNo can be a scalar, column vector, or matrix. If lineNo is a scalar, it applies to all prompts. If lineNo is a column vector, each element specifies the

number of lines of input for a prompt. If lineNo is a matrix, it should be size m-by-2, where m is

the number of prompts on the dialog box. Each row refers to a prompt. The first column specifies the number of lines of input for a prompt. The second column specifies the width of the field in characters.

Page 10: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

10

Example

prompt={'Input function:','Input color:','Input Limit:'};

title='Plot function';lines=1;defans={'sin(x)','r','2*pi'};answers=inputdlg(prompt,title,lines,defans);x=0:0.1:str2num(answer{3});y=eval(answers{1});figure;plot(x,y,answer{2});

Page 11: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

11

Other Dialog Box Functions>> lookfor 'dialog box'AXLIMDLG Axes limits dialog box.ERRORDLG Error dialog box.HELPDLG Help dialog box.INPUTDLG Input dialog box.LAYOUT script to define dialog box layout parameters.LISTDLG List selection dialog box.MATQDLG Workspace transfer dialog box.PAGEDLG Page position dialog box.PRINTDLG Print dialog box.QUESTDLG Question dialog box.TABDLG Create and manage tabbed dialog box.UIGETFILE Standard open file dialog box.UIGETPREF question dialog box with preference supportUIPUTFILE Standard save file dialog box.UISETCOLOR Color selection dialog box.UISETFONT Font selection dialog box.WARNDLG Warning dialog box.

Page 12: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

12

uicontrol

• creates a user interface control in the current figure window and returns a handle to it.

h= uicontrol %default UI controlget (h) % a list of properties of hget (h,'style') set (h,'style') % set the style of h

uicontrol('PropertyName1',value1,'PropertyName2,'value2,...)

Help uicontrolHelp set

Page 13: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

13

Callbacks

• Callbacks are statements that get executed in the command window when an UI element is activated

• Example:>> uicontrol ('string','Start plot', 'Callback', 'surf(membrane)')

• Callback control is a routine that executes whenever the uicontrol object has been activiated.

• The example creates a uicontrol (default style is pushbutton) and mark the button with text ‘Start Plot’. When this button is being pressed, the command surf(membrane) is executed and a plot will be generated in the workspace.

Page 14: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

14

GUIDE

• Graphical User Interface Development Environment (GUIDE) is a toolset consists of a Layout Editor and tools that can be used to add and arrange objects in a “figure” window (untitled figure). The following tools can be accessed from the Layout Editor.

• Alignment Tool - align objects with respect to each other.• Menu Editor - create window menus and context menus.• Property Inspector - inspect and set property values.• Object Browser - observe a hierarchical list of the Handle

Graphics• Component Palette – UI controls in the current MATLAB

session.

• To start the Layout Editor• New FileGUI or• enter >>guide at the command prompt

Page 15: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

15

GUI files

GUIDE stores the GUI in two files:-

• fig-file – a type of mat file contain GUI layout & components

• m-file – a function file contains initialization code & templates for callbacks that are needed to control GUI behaviour. You must add the callbacks to this file. GUIDE automatically opens this file in the editor when you save your GUI the first time.

• fig-file and the m-file must have the same name.

• Layout editor – place the components on UI and save in fig file

Page 16: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

16

GUI m-file Structure

Major sections of the GUI m-file are ordered as follows:-

• Comments

• Initialization GUIDE initialization tasks, Do Not edit this code

• Opening function Perform initialization tasks before user has access to UI

• Output function Returns outputs to CLI

• Callbacks Component and figure callbacks corresponding to events

• Utility or helper functions Functions that are not associated with an event

Page 17: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

17

Quiz Next Week

• 30% of total marks for this module• 30 multiple choice questions• 45 minutes • Open notes and NO discussion with your neighbour• A list of commands is given at the last few pages of the

workbook that will be provided as usual• On some commands that we may not covered in this

training course, you should call help wisely.• Other assessment:-

Workshop report, 1 page, submit to mailbox before 8-Dec You can do this after the quiz Keep a copy of the workshop report for logbook submission

due 4 weeks after summer term.

Page 18: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

18

The colon operator

>>A=0:pi/4:pi

A = 0 0.7854 1.5708 2.3562 3.1416

>> 100:-7:55

ans = 100 93 86 79 72 65 58

>> 55:7:100

ans = 55 62 69 76 83 90 97

Page 19: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

19

Use End as a subscript>> a=[1:3;10:10:30;100:100:300]a = 1 2 3 10 20 30 100 200 300>> a(end,end)ans = 300>> a(1,end)ans = 3>> a(end,1)ans = 100>> a(end-1,end)ans = 30>> a(end,end-1)ans = 200>> a(end-5)ans = 2

Page 20: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

20

Matrix manipulation & Transpose

>> a(1:end-3)ans = 1 10 100 2 20 200>> b=(a(1:end-3))'b = 1 10 100 2 20 200

Page 21: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

21

Colon & matrix reduction

% Make a into a row vector with colon>>a(:)'ans = 1 10 100 2 20 200 3 30

300

• Examples on Matrix Reduction using colon A(3,:)=[] % delete the third row in A A(:,2:5)=[] % delete column 2 to 5 in A A([1 4],:)=[] % delete 1st & 4th rows in A

Page 22: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

22

Replicate a matrix

>> a=[1 2 ; 3 4];>>repmat(a,3,3)ans = 1 2 1 2 1 2 3 4 3 4 3 4 1 2 1 2 1 2 3 4 3 4 3 4 1 2 1 2 1 2 3 4 3 4 3 4

Useful matrix generators:-zeros, ones, rand, randn, eye

Page 23: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

23

Transpose for complex number

>> z=[1+2i,2+4i]z = 1.0000 + 2.0000i 2.0000 + 4.0000i>> z'ans = 1.0000 - 2.0000i 2.0000 - 4.0000i>> z.'ans = 1.0000 + 2.0000i 2.0000 + 4.0000i

Elements are changed into its complex conjugate.

Use .’ to avoid changing elements into its complex conjugate when transpose if needed

Page 24: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

Example on nested For loop

% Create a n=5 symmetrical matrix A(n,n) with element (k,m) equals to k/m for m>=k

n=5; A=eye(n);for m=2:n for k=1:m-1 A(k,m)=k/m; A(m,k)=k/m; endend

24

>>A = 1.0000 0.5000 0.3333 0.2500 0.2000 0.5000 1.0000 0.6667 0.5000 0.4000 0.3333 0.6667 1.0000 0.7500 0.6000 0.2500 0.5000 0.7500 1.0000 0.8000 0.2000 0.4000 0.6000 0.8000 1.0000

Page 25: The Hong Kong Polytechnic University Industrial Centre 1 MatLAB Lesson 9 : Introduction to GUI & Revision Edward Cheung email: icec@polyu.edu.hk Room W311g.

25

Interactive Curve Fitting

% Example:- 2D interactive curve fitting% Figures -> Tools -> Basic Curve Fittingx=0:7y=[0,11,44,58,77,85,95,97];plot(x,y,'o')axis([0,7,0,100])