Program MATLAB to nie tylko zestaw przygotowanych funkcji, które pozwalają przeprowadzić obliczenia. To także program w którym możemy definiować własne funkcje. W ten sposób możemy przechować różnego rodzaju wzory i je przechowywać. Nowo przygotowane funkcje możemy także wyeksportować do pliku i przenieść w inne miejsce.
Edytor funkcji można otworzyć na dwa sposoby. W zakładce Home należy znaleźć przycisk New i z nowego menu kontekstowego wybrać Function:
Drugim sposobem jest wpisanie w konsoli edit i zatwierdzić enterem. W ten sposób pojawi się nam nowy obszar Editor z gotowym szkieletem funkcji:
Deklarację funkcji rozpoczynamy słowem
Napiszemy teraz funkcję, która zsumuje podane liczby. Funkcję nazwiemy suma. Będzie przyjmować dwa argumenty a i b. Na koniec zwrócimy wartość w, gdzie w = a + b:
(1.) W pierwszej linijce rozpoczynamy deklarację funkcji (
Nasza funkcja jest już gotowa. Jednak nie możemy jej jeszcze wywołać z poziomu konsoli. Zanim to zrobimy musimy zapisać naszą funkcję do pliku. Nazwa pliku jest bardzo ważna. Musi składać się z nazwy funkcji i musi mieć rozszerzenie .m. Innymi słowy naszą funkcję zapisujemy do pliku suma.m. Kiedy już to zrobimy możemy wywołać funkcję z poziomu konsoli:
Napiszemy teraz funkcję, która obliczy pierwiastki dla podanych współczynników a, b, c:
Tym razem nasza funkcja zwraca dwie wartości, więc musimy umieścić je w nawiasie kwadratowym. Innymi słowy wynikiem funkcji będzie dwuelementowa lista o wartościach zmiennych x1, x2. Nasza funkcja nazywa się fkwadratowa i przyjmuje trzy argumenty a, b, c. (2.) Obliczamy deltę wyrażenia. Tutaj należy pamiętać, że prawidłowo piszemy 4*a*c, ale nie
Zapisujemy funkcję do pliku fkwadratowa.m i sprawdzamy działanie funkcji z poziomu konsoli:
Istnieje możliwość, aby nie deklarować od razu, że zwracamy listę. Wystarczy, aby wpisać, że zwrócimy jakąś zmienną np. w i do niej należy przypisać listę:
Teraz funkcja zwróci listę jako zmienną w. W ten sposób, aby uzyskać oba pierwiastki nie musimy używać [x1, x2] =. Wystarczy pojedyncza zmienna:
Drugi styl pisania funkcji jest mniej poprawny, ponieważ pierwiastki to dwie pojedyncze wartości, a nie lista wartości. Jednak na własny użytek można używać tego stylu, ponieważ dla niektórych może wygodniejszy. Niemniej w przypadku pisania własnego zestawu funkcji trzeba by dodać dokumentację, która wyjaśniałaby użycie funkcji.
Wszystkie wyliczenia prowadzone wewnątrz funkcji są intepretowane w ten sam sposób jakby zostały wpisane do konsoli. Z tego powodu należy pamiętać, aby stawiać średniki. Dzięki temu na konsolę nie są wypisywane wyniki każdej kolejnej wykonywanej operacji. Oczywiście dopóki nie jesteśmy pewni działania funkcji brak średników pozwoli na przeanalizowanie działania funkcji i tym samym wyłapanie błędów w obliczeniach.
W większości przypadków biały znaki są ignorowane przez program, dlatego dodatkowe spacje, tabulatory na początku czy końcu linijki nie wpływają na działanie funkcji. Jednak nie można się ich całkowicie pozbyć. Spacje pomiędzy nazwami zmiennych czy pomiędzy zmienną, a słowem kluczowym (function, end) muszą pozostać. Nie można też usunąć znaków nowej linii. Jest spowodowane sposobem interpretacji programu - jedna linijka to jedna instrukcja, dlatego nawet łącząc linijki należy pamiętać o rozdzieleniu ich przecinkiem.
Jeśli ktoś chciał zadeklarować funkcję bezpośrednio w konsoli to niestety napotka problemy. Deklarowanie funkcji nie może odbywać się z poziomu konsoli, a tylko z poziomu edytora. W przypadku próby program nas o tym powiadomi:
W napisanej funkcji można używać komentarzy. Można je dopisać na końcu każdej linijki, a także pomiędzy linijkami:
W przypadku komentarza w linijce (2.) będzie to komentarz pokazywany jako opis funkcji w podsumowaniu pliku. Innymi słowy warto dodać w tym miejscu opis funkcji.
Zalecam wykonanie poleceń bez zaglądania do artykułu. Wskazówka: Każdy podpunkt odpowiada dokładnie jednemu poleceniu!
Napisz funkcję potega, która podniesie a do b, tj. zwróci wartość .
Napisz funkcję heron, która obliczy Pole trójkąta na podstawie wzoru Herona, gdzie:
, a
* Napisz funkcję sortuj, która posortuje dwie liczby