background image

Materiały do Laboratorium Informatyki 

 

Rok akademicki: 2008/09 

  

Semestr: 

letni 

Opracował: dr inż. Witold Nocoń 

MATLAB – cz. 3 – Funkcje 

 
 
Funkcje w środowisku MATLAB’a to m-pliki które mogą pobierać i zwracać argumenty z i 
do skryptu w którym zostały wykonane. Funkcje operują na zmiennych w swojej własnej 
przestrzeni (workspace), a więc zmienne stworzone wewnątrz funkcji nie należą do 
przestrzeni zmiennych dostępnych z wiersza poleceń MATLAB’a. Oczywiście istnieje 
możliwość przekazywania parametrów do funkcji i zwracania ich z funkcji. 
 
Przykład
 
function y = average(x) 
% Funkcja obliczajaca wartosc srednia elementow wektor 

 
y=sum(x)/lenght(x);  

% miejsce obliczenia średniej 

 
 
Powyższa funkcja musi być zapisana w oddzielnym m-pliku, zaś nazwa tego pliku powinna 
być identyczna z nazwą funkcji. W tym przypadku więc, plik powinien nosić nazwę 
average.m.

 

 
Tak napisana funkcja może być użyta w następujący sposób z wiersza poleceń MATLAB’a 
(lub skryptu) 
 
>> A = [1 2 3 4]; 

>> z = average(A) 
 

z = 
 
    2.5000 

 
Przyjrzyjmy się teraz dokładniej konstrukcji funkcji. Pierwsza linijka to definicja funkcji 
określająca jej interfejs, czyli sposób jej użycia: 
 
function y = average(x) 
 
    argument 

przekazywany 

do 

funkcji 

    nazwa 

funkcji 

(używana do wywołanie funkcji) 

    argument 

zwracany 

przez 

funkcję 

 

 

 

 

słowo kluczowe oznaczające definicję funkcji. 

 
Funkcja może oczywiście pobierać i zwracać więcej argumentów, np. 
 
function [x,y,z] = inna_funkcja(a,b,c) 
 
Jeśli funkcja nie zwraca argumentów może wyglądać następująco: 
 
function nazwa_funkzji(a,b,c) 
 

background image

Materiały do Laboratorium Informatyki 

 

Rok akademicki: 2008/09 

  

Semestr: 

letni 

Opracował: dr inż. Witold Nocoń 

Nazwa funkcji podlega takim samym ograniczeniom jak nazwa zmiennej, dlatego MATLAB 
pod uwagę bierze tylko 31 pierwszych znaków, nazwa nie może zaczynać się od cyfry, oraz 
może składać się wyłącznie z liter, cyfr i znaku podkreślenia. Nazwa pliku w którym zapisana 
jest funkcja powinna odpowiadać nazwie funkcji. Przed nazwaniem funkcji dobrze jest 
sprawdzić, czy nie istnieje już funkcji a takiej nazwie (poprzez wpisanie help 
nazwa_funkcji) 
 
Tekst umieszczony bezpośrednio po definicji funkcji a rozpoczynający się od znaku 
komentarza (%) będzie wyświetlony po wpisaniu w wierszu poleceń polecenia: 
 
help nazwa_fukcji 
 
czyli w naszym przypadku:  help average 
 
Kolejne komentarze umieszczane w funkcji (np. % miejsce obliczenia średniej) 
nie będą już wyświetlane. 
 
Po komentarzu pomocy, umieszczane jest ciało funkcji. W naszym przypadku jest to: 
 
y=sum(x)/lenght(x);  

% miejsce obliczenia średniej 

 
Ostatnia linijka w omawianej funkcji dokonuje obliczenia wartości zwracanej przez funkcję 
(zmienna y). Miejsce przypisania wartości do zmiennej zwracanej nie musi być oczywiście 
ostatnim wierszem funkcji. 
 
Zmienne lokalne i globalne 
 
Zmienne utworzone wewnątrz funkcji (pamiętamy,  że MATLAB nie wymaga specjalnej 
deklaracji, a więc pierwsze użycie zmiennej jest równocześnie jej deklaracją) są zmiennymi 
lokalnymi. Zmienne takie są więc widoczne tylko wewnątrz funkcji. 
 
Istnieje możliwość deklaracji zmiennych globalnych, a więc takich, które są widoczne w 
kilku funkcjach, lub w funkcjach i głównej przestrzeni zmiennych MATLAB’a. W takim 
przypadku konieczna jest deklaracja zmiennej z wykorzystaniem słowa kluczowego global. 
Np. w wierszu poleceń, lub skrypcie możemy napisać: 
 
global ALPHA BETA 

ALPHA = 0.01 
BETA = 0.02 

 
Teraz, w funkcji możemy użyć tych zmiennych globalnych pod warunkiem zapisania 
wewnątrz funkcji instrukcji: 
 
global ALPHA BETA 
 
 
 
 
 
 

background image

Materiały do Laboratorium Informatyki 

 

Rok akademicki: 2008/09 

  

Semestr: 

letni 

Opracował: dr inż. Witold Nocoń 

 
 
Przykładowe zadania do rozwiązania: 
 

1.  Napisz funkcję która na podstawie przekazanego wektora określi ilość elementów 

dodatnich, ilość elementów ujemnych oraz ilość elementów o wartości zero. 

2.  Napisz funkcję która na podstawie przekazanego wektora, zwróci trzy wektory 

zawierające odpowiednio elementy dodatnie, ujemne i zerowe.  

3.  Napisz funkcję, która wykorzystując funkcji z zad. 1 i 2. zwróci trzy wartości: 
•  średnią elementów dodatnich 

•  średnią elementów ujemnych 

•  ilość zer 

 

4. Napisz funkcję zwracającą wartość funkcji danej następującym wzorem: 

 

>

=

+

<

=

)

y

sin(

x

y

x

3

y

x

y

2

x

2

y

x

)

y

,

x

(

f

2

 

 

5. Po przetestowaniu funkcji z zad. 4 proszę wykorzystać ją w innej funkcji wyznaczającej 
wartość: 

 

(

)

=

+

=

k

N

p

N

i

0

0

y

i

y

,

x

i

x

f

y

 

 

Gdzie x

0

, y

0

x, 

 R, N

p

, N

k

 

 N – wartości wczytywane z klawiatury w skrypcie 

wywołującym tą funkcję. 

 

6. Funkcję z zad. 4 wykorzystać w kolejnej funkcji, która obliczy wartości funkcji dwóch 

zmiennych f(x,y), dla podanych przedziałów i kroków dla zmiennych x i y, czyli: 

 

k

p

x

x

x

;

  i zadanego kroku dx 

k

p

y

y

y

;

  i zadanego kroku dy 

 
Uzyskane wartości funkcji dwóch zmiennych (czyli powierzchni) należy przedstawić na 

wykresie trójwymiarowym, korzystając z funkcji mesh