Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα 6...

34
Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα 6 Παλινδρόμηση – Δημιουργία Video - Συναρτήσεις - GUI http://seismo.geology.upatras.gr/comp/ http://seismo.geology.upatras.gr/comp/

Upload: manasa

Post on 04-Jan-2016

54 views

Category:

Documents


3 download

DESCRIPTION

Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα 6 Παλινδρόμηση – Δημιουργία Video - Συναρτήσεις - GUI. http://seismo.geology.upatras.gr/comp/. Προσαρμογή δεδομένων (curve fitting). Παλινδρόμηση (Regression). Μέθοδος των ελαχίστων τετραγώνων. Υ. Εξαρτημένη μεταβλητή. Χ. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ

Μάθημα 6

Παλινδρόμηση – Δημιουργία Video - Συναρτήσεις - GUI

http://seismo.geology.upatras.gr/comp/http://seismo.geology.upatras.gr/comp/

Page 2: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Προσαρμογή δεδομένων (curve fitting)

Page 3: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Παλινδρόμηση (Regression)

Μέθοδος των ελαχίστων τετραγώνων

2

1

ˆ( ) minimumn

i ii

Y Y

0 1i iY b b X

Χ

Υ

1 1 11 2

2

1 1

n n n

i i i ii i i

n n

i ii i

n x y x y

b

n x x

0 1b y b x

Ανεξάρτητη μεταβλητή

Εξαρ

τημέ

νη μ

εταβ

λητή

Page 4: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Παλινδρόμηση (Regression)

Υ

Χ

20 1 2y b b x b x

20 1 2 ......... n

ny b b x b x b x

Page 5: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Παλινδρόμηση – Regression με τη Matlab

• Polyfit – υπολογισμός καμπύλης παλινδρόμησης

p = polyfit(x,y,n), υπολογίζει για τα δεδομένα x,y τους συντελεστές του πολυωνύμου p που έχει βαθμό n και προσαρμόζεται στα δεδομένα

Page 6: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Παλινδρόμηση – Regression με τη Matlabx = (0: 0.1: 2.5)';y = erf(x);

p = polyfit(x,y,6)

p = 0.0084 -0.0983 0.4217 -0.7435 0.1471 1.1064 0.0004

Page 7: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Παλινδρόμηση – Regression με τη Matlab

y = polyval (p , x) Υπολογίζει την τιμή ενός πολυωνύμου σε ένα σημείο X.

Είσοδος: οι συντελεστές του πολυωνύμου pΈξοδος : οι τιμές που αντιστοιχούν στα σημεία X

f = polyval(p,x);

p = polyfit(x,y,6)

plot(x,y,'o',x,f,'-')

Page 8: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία βίντεο με τη Matlab

Page 9: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία βίντεο με τη Matlab

• Αποθήκευση καρέ – καρέ

• Απευθείας χειρισμός των συντεταγμένων του γραφήματος

Page 10: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία βίντεο με τη Matlab• moviein(n) - δεσμεύει μνήμη για το βίντεο (δεν

χρησιμοποιείται σε νέες εκδόσεις)

• getframe - επιστρέφει ένα καρέ

• movie – προβάλει το βίντεο

• movie2avi – μετατρέπει το βίντεο σε μορφή AVI

• mpgwrite – μετατρέπει το βίντεο σε μορφή MPEG

Page 11: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία βίντεο με τη Matlab

F = getframeF = getframe(h)F = getframe(h,rect), [left bottom width height]

Παράδειγμα

for j = 1:n «…plotting commands…» F(j) = getframe;End

movie(F)

getframe - επιστρέφει ένα καρέ

Page 12: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία βίντεο με τη Matlab

Z = peaks; surf(Z)axis tightset(gca,'nextplot','replacechildren');

for j = 1:20 surf(sin(2*pi*j/20)*Z,Z) F(j) = getframe;end

movie(F,20)

movie2avi(F,'test.avi’)

Page 13: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία βίντεο με τη Matlab

movie(M)movie(M,n)movie(M,n,fps )movie(h,...)movie(h,M,n,fps,loc)

movie - προβάλει το βίντεο

Όπου M ένας πίνακας οι στήλες του οποίου είναι καρέ του βίντεο, συνήθως η έξοδος της getframe

n – είναι ο αριθμός των προβολών

* Το n μπορεί να είναι διάνυσμα με την εξής μορφή: [αριθμός προβολών σειρά προβολής καρέ]

π.χ. movie(M,[13 1 2 3 4 5 4 3 2 1]) NumberofPlays = 2;FrameOrder = [1:5 4:-1:2]; movie(M,[NumberofPlays FrameOrder])

Page 14: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία βίντεο με τη Matlab

movie2avi(mov,filename)movie2avi(mov,filename,param,value,param,value...)

movie2avi – μετατρέπει το βίντεο σε μορφή AVI

mov – το βίντεο της Matlab (πίνακας με καρέ)

Page 15: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία συναρτήσεων (function) στη Matlab

Page 16: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία συναρτήσεων (function) στη Matlab

• Αρχεία script ή αρχεία εντολών δεν έχουν ορίσματα εισόδου και εξόδου αλλά εκτελούν μια ακολουθία εντολών σε μεταβλητές του περιβάλλοντος εργασίας

• Αρχεία συναρτήσεων (function m-files) δέχονται ορίσματα εισόδου και επιστρέφουν μεταβλητές στην έξοδο, οι

εσωτερικές μεταβλητές των function είναι τοπικές. Λειτουργούν όπως οι εντολές της Matlab.

Τα αρχεία script και τα αρχεία function δημιουργούνται από έναν editor (καλύτερα με τον editor της Matlab - εντολή edit)

H Matlab μπορεί να εκτελέσει μια ακολουθία εντολών που είναι αποθηκευμένη σε ένα αρχείο με την προέκταση .m, τα αρχεία αυτά ονομάζονται “M-files” και υπάρχουν δύο τύποι τέτοιων αρχείων τα script files και τα function files.

Page 17: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία συναρτήσεων (function) στη Matlab

Παράδειγμα script

Page 18: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία συναρτήσεων (function) στη MatlabΤα αρχεία function περιέχουν και αυτά μια σειρά από εντολές της Matlab, έχουν όμως και μεταβλητές εισόδου – εξόδου

Γενικά, έχουν την πιο κάτω δομή

1. Επικεφαλίδα (header)Απαραίτητα με τη μορφή: function [output1, output2, ….] = filename (input1, input2, ….)

To filename είναι το όνομα του αρχείου .m ΑΛΛΑ και του function υποχρεωτικά πρέπει να είναι ίδια. Προσέξτε ότι οι μεταβλητές εισόδου είναι σε παρενθέσεις ενώ οι μεταβλητές εξόδου βρίσκονται σε αγκύλες. Οι τελευταίες δεν είναι απαραίτητες αν έχουμε μόνο μια μεταβλητή εξόδου. Για παράδειγμα αντί function [out1] = parad(x, y) μπορούμε να γράψουμε function out1 = parad(x, y)

2. Σχόλια (comments) Χρησιμοποιώντας το σύμβολο % μπορούμε να εισάγουμε σχόλια (προαιρετικά). Τα σχόλια εμφανίζονται με τη μορφή βοήθειας όταν τρέχουμε την εντολή help για το function.

3. Εντολές Μπορούν να χρησιμοποιηθούν όλες οι εντολές της Matlab και απαραίτητα θα πρέπει να υπολογίζονται τα output.

Page 19: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία συναρτήσεων (function) στη Matlab function y = randint(m,n,a,b) % RANDINT Randomly generated integral matrix. % randint(m,n) returns an m-by-n such matrix with % entries between 0 and 9. % randint(m,n,a,b) returns entries between integers a and b. if nargin < 3, a=0; b=9; end y = floor((b-a+1)*rand(m,n))+a;

Ο παραπάνω κώδικας πρέπει να αποθηκευτεί σε ένα αρχείο με το όνομα randint.m.

Page 20: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Οι εντολές της MATLAB, όπως οι max, size, κλπ είναι function m-files. Για την ονομασία ενός function ισχύουν οι κανόνες ονοματολογίας

που ισχύουν και για τις μεταβλητές:

• Το όνομα αρχίζει με γράμμα (του αγγλικού αλφαβήτου).• Το όνομα περιέχει μόνο γράμματα, αριθμούς και υποπαύλες

(underscore).• Δεν χρησιμοποιούνται ονόματα που έχουν δεσμευτεί από τη

MATLAB (π.χ.συναρτήσεις βιβλιοθήκης και εργαλειοθηκών).• Προτιμούνται μικρά ονόματα για πρακτικούς λόγους αν και δεν

υπάρχει περιορισμός στο μήκος των ονομάτων.

Δημιουργία συναρτήσεων (function) στη Matlab

Page 21: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία συναρτήσεων (function) στη Matlab

function [mean, stdev] = stat(x) % STAT Mean and standard deviation % For a vector x, stat(x) returns the % mean and standard deviation of x. % For a matrix x, stat(x) returns two row % vectors containing, respectively, the % mean and standard deviation of each column. [m n] = size(x); if m == 1 m = n; % handle case of a row vector end mean = sum(x)/m; stdev = sqrt(sum(x.^2)/m -mean.^2);

Page 22: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργία GUI με τη Matlab

Page 23: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Graphical User InterfacesGUI είναι ένα γραφικό περιβάλλον με το οποίο αλληλεπιδρά ο χρήστης, μέσω διαφόρων «αντικειμένων» που περιέχονται στο GUI.

Τα αντικείμενα μπορεί να είναι menus, toolbars, push buttons, radio buttons, listboxes, and sliders κλπ. Τα GUI της Matlab μπορούν επίσης να χρησιμοποιήσουν σαν «αντικείμενα» διαγράμματα και να δημιουργήσουν ομάδες «αντικειμένων»

Page 24: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργώντας GUI με το GUIDE

To guide είναι το πρόγραμμα σχεδιασμού GUI της Matlab. Εμφανίζεται με την εντολή guide και μας δίνει τη δυνατότητα να σχεδιάσουμε το GUI και να προσθέσουμε τον κώδικα.

Το guide δημιουργεί δύο αρχεία:

*.fig που περιέχει το GUI

*.m που περιέχει τον κώδικα

Page 25: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργώντας GUI

1. Σχεδιασμός2. Δημιουργία– Με το guide

3. Προγραμματισμός– Με το guide και το edit (δημιουργία

callback)4. Εκτέλεση, έλεγχος λειτουργίας

Page 26: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργώντας GUI

Page 27: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργώντας GUI - Σχεδιασμός

Page 28: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργώντας GUI - Προγραμματισμός

Προγραμματισμός είναι η δημιουργία των callback δηλαδή η ακολουθία των εντολών που εκτελούνται όταν ενεργοποιείται ένα «αντικείμενο»

• Οι εντολές callback αποθηκεύονται στο M-file του GUI• τα callback ανήκουν στα αντικείμενα (e.g. CreateFnc, ButtonDwnFnc,Callback, DeleteFnc)

Ένα callback αποτελείται από τα παρακάτω στάδια:• 1. Έλεγχος της κατάστασης του αντικειμένου που ξεκινά την ενέργεια• 2. Έλεγχος της κατάστασης του αντικειμένου που δέχεται την ενέργεια

και του οποίου θα αλλάξουν οι ιδιότητες• 3. Συλλογή των δεδομένων/πληροφοριών• 4. Επεξεργασία• 5. Αλλαγή κατάσταση στο αντικείμενο που δέχεται την ενέργεια

Page 29: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Δημιουργώντας GUI - Προγραμματισμός

% Create the data to plot.handles.peaks=peaks(35);handles.membrane=membrane;[x,y] = meshgrid(-8:.5:8);r = sqrt(x.^2+y.^2) + eps;sinc = sin(r)./r;handles.sinc = sinc;% Set the current data value.handles.current_data = handles.peaks;surf(handles.current_data)

Page 30: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

% Display surf plot of the currently selected data.surf(handles.current_data);

Page 31: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

% Determine the selected data set.str = get(hObject, 'String');val = get(hObject,'Value');% Set current data to the selected data set.switch str{val}; case 'Peaks' % User selects peaks. handles.current_data = handles.peaks; case 'Membrane' % User selects membrane. handles.current_data = handles.membrane; case 'Sinc' % User selects sinc. handles.current_data = handles.sinc;end% Save the handles structure.guidata(hObject,handles)

Page 32: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

Έτοιμα GUI ……

Page 33: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI

[FileName,PathName] = uigetfile('*.m','Select the M-file');

helpdlg('Choose 10 points from the figure','Point Selection');

prompt = {'Enter matrix size:','Enter colormap name:'};dlg_title = 'Input for peaks function';num_lines= 1;def = {'20','hsv'};answer = inputdlg(prompt,dlg_title,num_lines,def);

Page 34: Εισαγωγή στην Επιστήμη των Η/Υ ΙΙ Μάθημα  6 Παλινδρόμηση – Δημιουργία  Video  - Συναρτήσεις  - GUI