Pisanie własnych funkcji

Objaśnienia

Matlab oferuje mnóstwo gotowych funkcji, jednak użytkownik może też tworzyć własne funkcje - pisząc je w edytorze i zapisując do pliku z nazwą taką samą jak nazwa funkcji - a następnie może używać je identycznie jak funkcje Matlab'a.
Własne funkcje warto pisać gdy:

  1. funkcja będzie przynajmniej kilkukrotnie wykorzystywana w danym programie
  2. zgodnie z zasadami programowania strukturalnego - chcemy aby program (szczególnie gdy jest długi) składał się z funkcji o ściśle określonym działaniu – i dzięki temu był bardziej przejrzysty a więc i niezawodny

Definicja funkcji w Matlabie musi rozpoczynać się od linii o następujacej strukturze:

function wektor_zmiennych_wynikowych = nazwa_funkcji(parametry_wejściowe)

Na przykład: function [y1, y2, y3] = fun1(x1, x2, x3, x4)

Przykład 1. Funkcja "pierwiastek z sumy kwadratów"

W przypadku gdy w wyrażeniach powtarzają się pewne działania lecz dotyczą one różnych danych, może być opłacalne napisanie własnej funkcji. Na przykład jeśli dla danego x mamy obliczyć wyrażenie:

i być może następne wyrażenia w których występuje pierwiastek z sumy kwadratów to można zdefiniować funkcję:

Trzeba zapisać ją do pliku o nazwie pwsk.m
Komentarze pisane po znaku % są ważne gdyż objaśnią sposób używania tej funkcji gdy wpiszemy "help pwsk". Wypróbuj działanie funkcji dla kilku wartości parametrów:
>> pwsk(1,1)
ans =
    1.4142
Nadaj wartość zmiennej P a następnie sprawdź czy wstawienie przyprostokątnych (jak na rys.) do funkcji pwsk(...) da taką samą wartość.

Funkcją taką można także wykorzystać w dowolnym programie (pisanym w oddzielnym pliku), na przykład w takim jak poniżej, obliczającym dla różnych wartości:x:

Przykład 2. Funkcja z instrukcją IF (rozwiązywanie równania kwadratowego)

Podany wcześniej przykład skryptu (procedury) do rozwiązywania równania kwadratowego pokazano poniżej przerobiony na funkcję:

Funkcję należy zapisać do pliku o takiej samej nazwie jak nazwa funkcji, a więc: prkw.m

A oto dwukrotne użycie tej funkcji dla rozwiązania dwu równań kwadratowych:
1) dla: A= -2, B=3, C=4
2) dla: A= -132, B=343, C=564
[x1,x2]=prkw(-2,3,4)

x1 =
    2.3508

x2 =
   -0.8508

>> [x1,x2]=prkw(-132,343,564)

x1 =
    3.7407

x2 =
   -1.1422

Funkcje użytkownika tak jak i funkcje standardowe (na przykład sinus) nie zawierają instrukcji wejścia/wyjścia bo wprowadzenie danych następuje przez parametry (tutaj: a,b,c). Wynik (w Matlabie) może być macierzą a w szczególności wektorem lub skalarem.

UWAGA:
Wszystkie zmienne użyte wewnątrz funkcji są lokalne to znaczy nie są "widziane" z zewnątrz co można sprawdzić wpisując nazwę dowolnej z nich w oknie komend i kończąc klawiszem ENTER.

Funkcja może być wywołana samodzielnie (z konkretnymi parametrami) ale najczęściej opłaca się ją napisać gdy będzie używana w innych wyrażeniach i instrukcjach jako cegiełka większego programu.