Tutorial MATLAB 03

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,

y

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.


Wyszukiwarka

Podobne podstrony:
Tutorial MATLAB 03
matlab 03
PPA 03 2013 MATLAB
matlab tutorium2
Matlab Tutorial
Matlab tutorial GUI
Matlab Polski tutorial
Matlab Laboratorium 03
Artificial Neural Networks The Tutorial With MATLAB
L 03 a Sieci dwuwarstwowe w MATLABie
wykład 5 +matlab, W SPR nr 03 04 Kinematyka Odwrotna
PPA 03 2013 MATLAB
matlab tutorium2
Matlab Tutorial for Systems and Control Theory (MIT) (1999) WW
tutorial3 Using MATLAB in Linear Algebra

więcej podobnych podstron