320 likes | 538 Views
Wykład 3 Dr Aneta Polewko-Klim. https://play.google.com. 28. Funkcje. W ystępują dwa rodzaje funkcji: a) funkcje wbudowane jak np. sqrt b) funkcje przechowywane w m-plikach (właśnie te m-pliki funkcyjne możemy tworzyć samodzielnie. Jak to zrobić?.
E N D
Wykład 3 Dr Aneta Polewko-Klim https://play.google.com
28. Funkcje. Występują dwa rodzaje funkcji: a) funkcje wbudowane jak np. sqrt b) funkcje przechowywane w m-plikach (właśnie te m-pliki funkcyjne możemy tworzyć samodzielnie. Jak to zrobić? - pierwszy wiersz m-pliku musi zawierać definicję nowej funkcji: słowo kluczowe function - nazwę funkcji – musi być taka sama jak nazwa pliku (bez rozszerzenia) listę argumentów wyjściowych
Definicja funkcji function[wart_fun1, wart_fun2, ...]=nazwa_funkcji(parametr1, parametr2, ...) % ewentualny opis funkcji w formie komentarza wart_fun1=wynik1; wart_fun2=wynik2; ... end function [y]=radst(x) %przelicza radiany na stopnie x – ilość radianów y=(x.*180)/pi; Ważne !!!: zmienne utworzone podczas działania funkcji są usuwane z chwilą zakończenia wykonywania funkcji i nie są widoczne poza nią, podobnie zmienne utworzone poza funkcją nie są widoczne w jej wnętrzu. Funkcja operuje więc na zmiennych lokalnych. Aby zmienna z przestrzeni roboczej Matlaba była widoczna w ciele funkcji należy zadeklarować ją jako globalną i deklarację tą powtórzyć w ciele funkcji global A B C
Szczegóły 1. Jeśli funkcja posiada kilka argumentów wyjściowych, oddzielamy je przecinkiem, a wszystkie umieszczamy w nawiasach kwadratowych np: function [a, b, c] = normest(w, n, p, r) 2. Jeśli funkcja ma tylko jeden argument wyjściowy, nawiasy możemy pominąć: function r = roots(c) 3. Jeżeli nie zwraca argumentów wyjściowych, może być zapisana w postaci: functionnazwa_funkcji(arg_wej) 4. Nazwy funkcji muszą się rozpoczynać literą, a pozostała część może być kombinacją liter, cyfr i znaku podkreślenia. Jeżeli nazwa pliku różni się od nazwy funkcji, to zwycięża nazwa pliku, dlatego powinno się stosować identyczne nazwy funkcji i pliku. 5. Kolejne linie po słowie function zaczynające się od % stanowią help
Funkcja - definicja W przypadku gdy mamy małą ilość instrukcji i gdy chcemy umieścić funkcję w skrypcie możemy wykorzystać: nazwa funkcji=@(zmienna_1, …, zmienna_n) (instrukcja)
Przydatne funkcje - funkcje Matlab przydatne podczas budowania funkcji użytkownika. - nargin - ustala liczbę wywołanych argumentów wejściowych - nargout - ustala liczbę wywołanych argumentów wyjściowych
Przykład Napisać funkcję, która wywołana z jednym parametrem oblicza a^2 , natomiast przy dwóch argumentach a i b obliczy a^2+b^2. function W=licze(a,b) ifnargin<1 error('Mała liczba argumentów') elseifnargin==1 W=a.^2; elseifnargin==2 W=a.^2+b.^2; else error('Za dużo argumentów') end
29. Funkcje ze zmienną liczbą parametrów wejściowych i wyjściowych - definicja functionvarargout=nazwa funkcji (varargin) function[ ]=nazwa funkcji (varargin) functionvarargout=nazwa funkcji ()
Test kompetencji: przedstaw możliwe rezultaty wykonania programu function []=ryswykres(varargin) x=1:10 switchnargin case 1 plot(x,varargin{1}.*x) case 2 plot(x,varargin{2}.*x.^2+varargin{1}.*x) otherwise error('Brak mozliwości') end
Funkcje ze zmienną liczbą parametrów wejściowych i wyjściowych Konwertowanie obrazu RGB na obraz binarny www.mathworks.com
30. Funkcje ze zmienną liczbą parametrów wejściowych i wyjściowych http://www.youtube.com/watch?v=Od-cgGRlvi4
32. Dla zaawansowanych: pętle równoległe parfor, praca na kilku procesorach matlabpool Funkcja włączenia matlabpool open ilość procesorów np.matlabpool open 8
Dla zaawansowanych: pętle równoległe parfor, praca na kilku rdzeniach matlabpool http://www.youtube.com/watch?v=TXMhpKLi9hA
33. Kompilacja. Praktyczny program to taki który piszesz z wizją końca:
Kompilacja 1. Kompilator Matlab zamienia funkcję zapisaną w pliku typu M-file na wersję wykonywalną, bibliotekę MEX, plik lub kod programu w C czy C++. 2. Rodzaj generowanych plików: kod w języku C do budowania plików typu MEX, kod w języku C lub C++, biblioteki dynamiczne i statyczne oraz wykonywalną aplikację 3. Należy posiadać zainstalowany toolboxcompiler. 4. Plik wykonywalny exe będzie działać na komputerze na którym jest zainstalowana taka sama wersja matlaba.
Uwagi dotyczące budowania programu 1. Nie można używać skryptów; 2. Program musi bazować/wykorzystywać wyłącznie funkcje;3. Gui wykonane za pomocą guide;4. Wszystkie m-pliki z funkcjami należy podać przy kompilacji;5. Wymagane aby zmienne w funkcjach były globalne. 6. Kompilacji nie podlegają funkcje korzystające z poleceń input, evaljeśli te działają na zmiennych z workspaceoraz operujące na zmiennych globalnych
Funkcja do kompilacji mcc [-opcja] funkcja [funkcja2 .] [mex1 . mexN] [mlib1 . mlibN] funkcja - nazwa funkcji poddawana kompilacji, mex - nazwa pliku typu MEX mlib - nazwa biblioteki opcje (wybrane): -c generuje kod C -p generuje kod C++ oraz działającą aplikację -x generuje plik typu MEX -m generuje wykonywalną aplikacją
Przykłady opcji >> mcc -m funkcja % generuje wykonywalną aplikację na podstawie pliku funkcja.m >> mcc -m funkcja1 funkcja2 % generuje wykonywalne aplikacje na podstawie plików funkcja1.m oraz funkcja2.m >> mcc -T compile:exe funkcja % generuje wykonywalną aplikację
Jeśli chcesz wiedzieć więcej zajrzyj na: http://www.mathworks.com/products/compiler/
34. GUI GUI (Graphical User Interface) system, który umożliwia użytkownikowi automatyczne wydawanie wielu poleceń (np. poprzez naciśnięcie określonego klawisza). Projektowanie GUI to pierwszym kroki do kreowania wolno stojących aplikacji. W Matlabie do projektowania GUI służy program GUIDE (Graphical User Interface Development Enviroment) – tworzymy interfejs dla użytkownika.
34. GUIDE - uruchomienie • Wariant 1 Uruchamiamy wpisując • w oknie „CommandWindow” • komende>> guide • 2. Wariant 2: • z menu fileMatlaba wybieramy opcję new GUI • otworzy się okno graficznego projektowania obiektów GUI. Wybieramy
Menu obiektów używanych w GUI. • - Push Button – przycisk (dzwonkowy) • - Slider – suwak • - Radio Button – wybór jednej z opcji w grupie • - Checkbox - włącznik • - Edit Text – tekst edytowalny (w trakcie działania GUI) • - StaticText – tekst (nie zmieniany w trakcie działania GUI) • - Popup Menu – lista rozwijana • - Listbox • - Toggle Button – przełącznik (posiada dwa stany: aktywny lub nie aktywny) • - Axes – pole wykresu • Panel – ramka • Button Group - może sterować obiektami znajdującymi się w jego wnętrzu • - ActiveX Control – inne funkcje. np. zegar Windows
UWAGA Każdy obiekt wprowadzony w GUIDE ma własnego „PropertyInspector”, w którym można ustawić podstawowe informacje. W centrum (część zakratkowana) znajduje się obszar wyświetlany po uruchomienu aplikacji. Możliwości uruchomienia „Property Inspector”: 1. klikając dwukrotnie w dowolnym miejscu; 2. Kliknięcie prawym przyciskiem myszy i z rozwijanego menu wybranie opcji „Property Inspector” 3. Z menu „View” wybranie opcji „Property Inspector”
Najistotniejsze pola String wpisujemy „rysuj” dzięki temu po włączeniu GUI nasz przycisk będzie miał tą właśnie nazwę. Tag – wpisujemy „rysuj” w wygenerowanej funkcji pojawi się np. rysuj_Callback
Propertyinspector - wykresu. Opcję Units przestawiamy na centymetry, a następnie wielkość wykresu np. na 10x6 cm, pozycje x=1, y=3 Naciskamy „+” przy zakładce „Position” i wybieramy zmieniamy „width” na 15, a „height” na 10. (Zatwierdzamy przyciskiem „Enter”)
Start programu - 3 sposoby • Wciskamy „ctrl+t” • Z menu Tools->run • Wciskamy zieloną strzałeczkę w prawym górnym rogu Czy chcemy zapisać zmiany? Bez zapisania zmian nie da się uruchomić GUI.
Po zapisaniu wygeneruje się nam automatycznie m-file, o tej samej nazwie co plik fig. Wspólnie tworzą one informacje dla Matlaba jak ma wyglądać GUI.
function rysuj_Callback(hObject, eventdata, handles) x1=0:0.2:6.2; y1=sin(x1); y2=cos(x1) plot(x1,y1,’r’,x1,y1,’rx’); plot(x1,y2,’b’,x1,y2,’bo’);
GUIDE - utrwalenie http://www.youtube.com/watch?v=D_hmws6dwgg