Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałDominika Piasecka Został zmieniony 9 lat temu
1
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania
2
Tworzenie skryptów
3
Funkcje Funkcje definiujemy podobnie jak skrypty, z tym że rozpoczynamy od słowa kluczowego function, np. Nazwa m-pliku musi być taka sama jak nazwa funkcji
4
Funkcje Zmienne zdefiniowane w Workspace nie są widoczne wewnątrz funkcji (są widoczne w skrypcie). Zmienne, które definiujemy wewnątrz funkcji nie pojawią się w Workspace. Funkcja może przyjmować dowolną liczbę argumentów i zwracać dowolną liczbę argumentów, np. function [a,b,c]=funkcja(x,y,z) a=2*x; b=3*y; c=4*z;
5
Funkcje Polecenie return kończy działanie funkcji. Po poleceniu return nie podajemy żadnych wartości. Wewnątrz funkcji nie musi być polecenia return. Wówczas funkcja skończy działanie po wykonaniu wszystkich instrukcji. Przed wyjściem z funkcji wszystkie (nie wszystkie) argumenty zwracane muszą istnieć. function [a,b,c]=funkcja(x,y,z) a=2*x; b=3*y; c=4*z; return;
6
Funkcje – argumenty zwracane Treść m-pliku: function [a,b,c]=funkcja(x,y,z) a=2*x; b=3*y; c=4*z; return; Wywołanie: >> [a,b,c]=funkcja(2,3,4) a = 4 b = 9 c = 16 >> [a,b]=funkcja(2,3,4) a = 4 b = 9 >> a=funkcja(2,3,4) a = 4 >> funkcja(2,3,4) ans = 4 >> [a,b,c,d]=funkcja(2,3,4) Error using funkcja Too many output arguments. >> [a,~,c]=funkcja(2,3,4) a = 4 c = 16
7
Funkcje – argumenty zwracane Treść m-pliku: function [a,b,c]=funkcja(x,y,z) disp('Liczba argumentów zwracanych'); disp(nargout); a=2*x; b=3*y; c=4*z; return; >> [a,b,c]=funkcja(2,3,4); Liczba argumentów zwracanych 3 >> [a,b]=funkcja(2,3,4); Liczba argumentów zwracanych 2 >> a=funkcja(2,3,4); Liczba argumentów zwracanych 1 >> funkcja(2,3,4); Liczba argumentów zwracanych 0 Liczba zwracanych argumentów podczas aktualnego wywołania funkcji Do zmiennej ans zostanie zapisana pierwsza zwracana przez funkcję wartość
8
Funkcje – argumenty zwracane Treść m-pliku: function [a,b,c]=funkcja(x,y,z) if nargout>0 a=2*x; end if nargout>1 b=3*y; end if nargout>2 c=4*z; end return; >> [a,b,c]=funkcja(2,3,4) a = 4 b = 9 c = 16 >> [a,b]=funkcja(2,3) a = 4 b = 9 >> a=funkcja(2) a = 4 >> funkcja() >> funkcja
9
Funkcje – argumenty aktualne function [a,b,c]=funkcja(x,y,z) if nargin>0 a=2*x; else a=NaN; end if nargin>1 b=3*y; else b=NaN; end if nargin>2 c=4*z; else c=NaN; end return; >> [a,b,c]=funkcja(2,3) a = 4 b = 9 c = NaN >> [a,b,c]=funkcja(2) a = 4 b = NaN c = NaN >> [a,b,c]=funkcja a = NaN b = NaN c = NaN Liczba argumentów aktualnych
10
Funkcje – zmienna liczba argumentów function y=funkcja(varargin) y=sum(cell2mat(varargin)); return; >> a=funkcja(1) a = 1 >> a=funkcja(1,2) a = 3 >> a=funkcja(1,2,3) a = 6 >> a=funkcja(1,2,3,4) a = 10 >> a=funkcja(1,2,3,4,5) a = 15 Tablica komórkowa zawierająca wszystkie argumenty wejściowe Zamiana tablicy komórkowej na zwykłą tablicę.
11
Funkcje – zmienna liczba argumentów function varargout=funkcja(varargin) if nargin~=nargout error('Liczba arg. we. i wy. musi rowna'); end varargout=num2cell(cell2mat(varargin).^2); return; >> a=funkcja(2) a = 4 >> [a,b]=funkcja(2,3) a = 4 b = 9 >> [a,b,c]=funkcja(2,3,4) a = 4 b = 9 c = 16 >> a=funkcja(2,3) Error using funkcja (line 3) Liczba arg. we. i wy. musi równa Tablica komórkowa zawierająca wszystkie argumenty zwracane Zamiana tablicy liczbowej na tablicę komórkową
12
Funkcje – nazwy argumentów aktualnych function funkcja(varargin) disp(nargin); for i=1:nargin disp(inputname(i)); end return; >> funkcja(a,b,3,d,5) 5 a b d Nazwy argumentów aktualnych wywołania funkcji
13
Funkcje lokalne M-plik objetosc_walca: function v=objetosc_walca(r,h) v=pole_kola(r)*h; return function p=pole_kola(r) p=pi*r^2; return >> objetosc_walca(2,3/pi) ans = 12 >> pole_kola(2) Undefined function 'pole_kola' for input arguments of type 'double'. Uwagi: Funkcji lokalnych nie można definiować w skryptach. Nazwa m-pliku musi być zgodna z nazwą funkcji globalnej. Zmienne zdefiniowane w jednej funkcji nie są widoczne w drugiej. Funkcja lokalna – widoczna tylko wewnątrz funkcji globalnej.
14
Funkcje zagnieżdżone function a=fun_glob(b) c=fun_lok(b); d=fun_zag(c); a=c+d; function e=fun_zag(f) disp(b); e=f+1; end function g=fun_lok(h) disp(b); g=h+2; end OK BŁĄD
15
Funkcje prywatne Funkcje prywatne są definiowane w katalogu private. Mogą być wywoływane tylko przez inne funkcje. function y=fun_priv(x) y=2*x; return; function y=fun(x) y=fun_priv(x); return; >> fun_priv(2) Undefined function 'fun_priv' for input arguments of type 'double'. >> fun(2) ans = 4
16
Kolejność odwołań do nazwy 1.Odwołanie do zmiennej. 2.Odwołanie do funkcji zagnieżdżonej. 3.Odwołanie do funkcji lokalnej. 4.Odwołanie do funkcji prywatnej. 5.Odwołanie do funkcji MATLABa (wbudowanej). 6.Odwołanie do funkcji globalnej. 7.Odwołanie do funkcji MATLABa.
17
Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie: http://creativecommons.org/licenses/by-sa/3.0/deed.pl
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.