background image

 

MATLAB 

PODSTAWY PROGRAMOWANIA 

 

Ćwiczenia 5 

FUNKCJE 

 

 

 
 
 

 
 
 
 
Wydział Inżynierii Lądowej i Środowiska 
Katedra Mechaniki Budowli i Mostów  

copyleft by Marcin Kujawa & Łukasz Smakosz 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

2/15 

Funkcje

 

 
Funkcją
 nazywamy ciąg instrukcji zapisany w oddzielnym pliku. Jej realizacja 
zachodzi po wprowadzeniu nazwy funkcji oraz uporządkowanego ciągu 
argumentów oddzielonych przecinkami 

 

ograniczonych  okrągłymi 

nawiasami
 

    B=ones(2,3) 

 

 

 
 
 
 
 
 

 

Podstawienie - wynik działania 
funkcji
, czyli jej wartość, zostanie 
podstawiony za zmienną B. W tym 
przypadku  wynikiem działania 
funkcji
 jest macierz składająca się  
z jedynek. Wymiary macierzy 
określają podane w okrągłych 
nawiasach argumenty

Nazwa 

funkcji, 

pokrywa się z 

nazwą pliku
który zawiera 

realizowany w 

funkcji ciąg 

instrukcji. 

Argumenty, czyli dane 
niezbędne do realizacji funkcji. 
Podaje się je w określonej 
kolejności
 i oddziela 
przecinkami. Muszą mieć 
odpowiednią postać, np. skalar, 
wektor, macierz czy tekst - 
zależnie od typu funkcji.   

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

3/15 

Przykłady funkcji 
 

a=sin(x) 

Argument  x może być skalarem, wektorem lub macierzą.  Wynik działania funkcji, 
podstawiony za a, ma tę samą postać oraz wymiar. 

 
c=det(B) 

Argument  B musi być macierzą kwadratową.  Wynik działania funkcji, podstawiony 
za c, jest wyznacznikiem tej macierzy.

 

 

b=input(

'Komunikat'

,

's'

Funkcja ma dwa argumenty typu tekstowego - pierwszy jest komunikatem, który 
wyświetli się na ekranie, drugi mówi, że zmienna b, za którą został podstawiony ciąg 
znaków wprowadzony przez użytkownika, jest typu tekstowego.

 

 

d=menu(

'tytul menu'

,

'opcja1'

,

'opcja2'

)

 

Wszystkie argumenty są typu tekstowego i oznaczają, kolejno, nazwę menu oraz jego 
opcji. Wynikpodstawiony za zmienną d, jest numerem wybranej opcji. 

 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

4/15 

Przykłady funkcji 
 

[m,n]=size(A)

 

Argument  A może być macierzą dowolnych rozmiarów. Wynikiem działania funkcji 
są dwie liczby, podstawione za m  i  n,  będące, kolejno, liczbą wierszy i kolumn 
macierzy A. 

 
[x,y]=meshgrid(X,Y)

 

Argumenty Y są wektorami jednakowej długości. Wynikiem działania funkcji są 
dwie macierze, podstawione za y, będące zbiorem współrzędnych siatki węzłów.

 

 

disp(

'Komunikat'

)

 

Funkcja ma jeden argument typu tekstowego.  Wynikiem działania funkcji jest 
komunikat, który pojawia się na ekranie po jej wywołaniu.

 

 

plot(x,y)

 

Argumenty x i y są wektorami lub macierzami o jednakowych rozmiarach. Wynikiem 
działania funkcji jest wykres przyporządkowujący elementom wektora x elementy 
wektora y. 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

5/15 

Własne funkcje

 

 
W Matlabie istnieje możliwość  definiowania własnych funkcji i 
wykorzystywania ich jako części programów i skryptów.  
 
Przy tworzeniu i korzystaniu z własnych funkcji trzeba pamiętać o tym, że 
różnią się one od skryptów  składnią oraz sposobem pobierania danych
Tworzone przez użytkownika funkcje mają ściśle określoną składnię pierwszej 
aktywnej (nie będącej komentarzem) linii pliku.  
 
Uwagi: 

 W celu pobierania danych od użytkownika podczas tworzenia pliku 

funkcji nie wykorzystujemy funkcji input.  

 W pliku przed instrukcją function nie powinny znajdować się żadne inne 

komendy.  

 W pliku funkcji nie należy wykorzystywać komendy clear
 

Plik funkcji musi znajdować się w tym samym katalogu, co korzystający 
z funkcji skrypt
.

 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

6/15 

Przykład: 
Napisz funkcję, która oblicza wartość n!
 

% Funkcja wyznacza wartosc n!

 

function

 [wynik]=silnia(n)

 % pierwsza aktywna linia kodu

 

 
 
 
 
 
 
wynik=1;

 

for

 i=1:n

 

    wynik=wynik*i;

 

end

 

  

 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

7/15 

Przykład: 
Napisz funkcję, która oblicza wartość n!
 

% Funkcja wyznacza wartosc n!

 

function

 [wynik]=silnia(n) 

% pierwsza aktywna linia kodu

 

 
 
 
 
 
 
wynik=1;

 

for

 i=1:n

 

    wynik=wynik*i;

 

end

 

  

 

Instrukcja 
otwierająca 
plik funkcji.

Zmienna, która 
zostanie wyświetlona 
jako wynik 
działania funkcji

Nazwa funkcji, musi być taka 
sama jak nazwa pliku.  
W tym przykładzie plik należy 
zapisać pod nazwą 

silnia

.m

Zmienna, która jest argumentem 
funkcji. Przy pisaniu pliku należy 
ją traktować jako daną

Ciąg instrukcji realizowany w ramach funkcji. 
Argumenty funkcji należy w nim traktować jako 

dane

, zmienne zdefiniowane jako 

wyniki

 powinny 

być jedynym widocznym efektem działania funkcji.  

Każda

 linia kodu, która mogłaby wyświetlić coś na 

ekranie, powinna być zakończona średnikiem

Definiowanie własnej funkcji 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

8/15 

Przykład: 
Napisz skrypt, który wykorzystuje stworzoną funkcję. Niech skrypt akceptuje 
tylko n, będące liczbami naturalnymi. 
 

% Skrypt wyznacza wartosc n!

 

clear, clc

 

 

 

n1=input(

'podaj wartosc n: '

);

 

 
while

 n1<=0 | n1~=round(n1)

 

    clc

 

    n1=input(

'wprowadz liczbe naturalna! '

)

 

end

 

 
ns=silnia(n1)

 

 
 

 

 

 
 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

9/15 

Przykład: 
Napisz skrypt, który wykorzystuje stworzoną funkcję. Niech skrypt akceptuje 
tylko n, będące liczbami naturalnymi. 
 

% Skrypt wyznacza wartosc n!

 

clear, clc

 

 

 

n1=input(

'podaj wartosc n: '

);

 

 
while

 n1<=0 | n1~=round(n1)

 

    clc

 

    n1=input(

'wprowadz liczbe naturalna! '

)

 

end

 

 
ns=silnia(n1)

 

 
 

 

 

 
 

Pętla wewnętrzna aktywuje się 
tylko wtedy kiedy wprowadzona 
wartość nie jest liczbą naturalną. 

Realizacja własnej funkcji 

Zmienna

, wstawiona w miejsce argumentu funkcji 

silnia

, zostanie 

potraktowana jako 

dana

 dla ciągu instrukcji w pliku funkcji

Za ns został podstawiony wynik funkcji 

silnia

.

 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

10/15 

ZADANIE DO WYKONANIA NA ZAJĘCIACH 

 

Stwórz funkcję obliczającą pole koła w zależności od jego promienia. Następnie 
stwórz  skrypt wykorzystujący tę funkcję i kontrolującą czy wprowadzony 
promień jest liczbą nieujemną. 
 

 
 

 
 

 

 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

11/15 

ZADANIE DO WYKONANIA NA ZAJĘCIACH 

 

Stwórz funkcję obliczającą pole koła w zależności od jego promienia. Następnie 
stwórz  skrypt  wykorzystujący tę  funkcję i kontrolującą czy wprowadzony 
promień jest liczbą nieujemną. 
 
Definicja funkcji: 

% Funkcja wyznacza pole kola

 

function

 [field]=pole(r) 

 

field=pi*r^2;

 

 
Realizacja skryptu z funkcją: 

clear, clc

 

promien=input(

'podaj wartosc promienia: '

);

 

while

 promien<0

 

    clc

 

    promien=input(

'wprowadz liczbe nieujemna! '

);

 

end

 

pole_kola=pole(promien)

 

 

Nazwa pliku:

pole

.m 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

12/15 

Funkcje wielu wartości 
 

Funkcja może mieć  więcej niż jeden wynik - żeby uzyskać te wyniki należy 
zastosować specjalny typ podstawienia. Przykładami takich funkcji są size oraz 
meshgrid

 

[x,y]=meshgrid(X,Y) 

 

 

 
 
 
 

 

 

Podstawienie - dwa wyniki 
działania funkcji
, czyli jej 
wartości, zostaną  podstawione 
za zmienne i y

Nazwa funkcji 

Argumenty

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

13/15 

Przykład: 
Stwórz  funkcję obliczającą pole i obwód koła w zależności od jego promienia 
oraz prosty skrypt ją realizujący. 
 

 

Definicja funkcji: 
 

% Funkcja wyznacza pole i 
obwod kola 

function

 [field,peri]=kolo(r) 

field=pi*r^2;

 

peri=2*pi*r;

 

Realizacja skryptu z funkcją: 
 

clear, clc 

 

promien=input(

'promien: '

);

 

[pole,obwod]=kolo(promien)

 

 

 

 

Kolejne wyniki działania funkcji

Podstawienie za kolejne 
wyniki działania funkcji

Nazwa pliku: 

kolo

.m 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

14/15 

ZADANIE DO WYKONANIA NA ZAJĘCIACH 

 

Stwórz funkcję obliczającą pierwiastki równania kwadratowego postaci 

. Następnie stwórz prosty skrypt wykorzystujący tę funkcję

 

 
 

 
 

 

 

background image

MATLAB 

 5. Funkcje  2013/2014 

Marcin Kujawa 

 Łukasz Smakosz 

 Politechnika Gdańska 

 WILiŚ 

 Katedra Mechaniki Budowli i Mostów 

15/15 

ZADANIE DO WYKONANIA NA ZAJĘCIACH 

 

Stwórz funkcję obliczającą pierwiastki równania kwadratowego postaci 

. Następnie stwórz prosty skrypt wykorzystujący tę funkcję

 
 
Definicja funkcji: 

 
% Funkcja wyznacza pierw. 
rown. kwadratowego

 

function

 [x1,x2]=kwad(a,b,c)

 

 
delta=b^2-4*a*c;

 

x1=(-b-sqrt(delta))/2/a;

 

x2=(-b+sqrt(delta))/2/a;

 

Realizacja skryptu z funkcją: 

 
clear, clc

 

a=1;

 

b=0;

 

c=-4;

 

[x1,x2]=kwad(a,b,c)

 

 

 

 
 

 

Nazwa pliku: 

kwad

.m