Zmienna s, wykorzystywana wewnątrz funkcji w funkcji, jak również zmienne w pierwszym wierszu: r,A i tol są lokalnymi zmiennymi funkcji i są oddzielone od innych zmiennych w obszarze roboczym MATLAB-a. W ramach funkcji mogą być zdefiniowane funkcje wewnętrzne jako subfunkcje, które są dostępne wewnątrz danej funkcji.
Powyższy przykład ilustruje bardzo ważną cechę funkcji MATLAB-a. która zwykle nie występuje w innych językach programowania - zmienną liczbę argumentów. Funkcja rank może być wywołana na kilka sposobów: rank(A) r = rank(A) r = rank(A,1.e-6)
Wiele funkcji MATLAB-a działa w ten sposób. Jeśli nie ma żadnych argumentów wyjściowych, wynik jest przechowywany w zmiennej ans. Jeśli nie ma drugiego argumentu wyjściowego, funkcja wykorzystuje wartość domyślną. Uwzględniając powyższe należy zawsze upewnić się. czy podaliśmy wszystkie niezbędne argumenty, umieszczając argumenty funkcji wr nawiasach zwykłych, a wartości wynikowe w nawiasach kwadratowych.
W poleceniach wewnętrznych funkcji dostępne są dwie wielkości o nazwach nargin i nargout, które oznaczają liczbę argumentów wejściowych i wyjściowych, określanych w każdym wywołaniu funkcji. Funkcja rank używa zmiennej nargin i nie używra nargout.
Funkcje nargin i nargout pozwalają nam określić z iloma argumentami wejściowymi i wyjściowymi jest wywoływana funkcja. Dla wybrania odpowied-ii.cj opcji używane są instrukcje warunkowa z warunkami zależnymi od liczby argiiit' ntów.
Poniżej znajduje się bardziej zaawansowany przykład funkcji. Odnajduje ona pierwszy leksem w ciągu znaków. Leksem jest to pewna liczba znaków otoczona spacjami lub innymi znakami. Gdy podamy jeden argument wejściowy, funkcja przyjmuje, że ogranicznikiem jest spacja. Gdy podamy dwa argumenty, pozwala nam określić inny ogranicznik. Umożliwia także występowanie dwóch możliwych list argumentów wyjściowych.
function [leksem,reszta] =strtok (ciąg, ograniczniki)
Funkcja wymaga wprowadzenia przynajmniej jednego argumentu
ifnargin<1, error ('Za mało argumentów’); end leksem = [ ]; reszta = [ ]; len = lenght(ciąg); if len == 0
Return
end
102