Druga część tutoriala do MATLABa dotyczy skryptów i funkcji. Może się wydawać, że temat jest błahy jednak omawiam w nim rzadko poruszane wątki, które znacząco ułatwią Wam programowanie i pisanie własnych funkcji. Czas na MATLABowe Tips&Tricks.
Tematyka bieżącego wpisu jest podzielona na pięć kategorii: system pomocy, tworzenie wektorów i macierzy, odwoływanie do elementów, wyrażenia warunkowe oraz skrypty - dobre praktyki. Rady i „sztuczki” opisane poniżej pozwolą na sprawne, szybkie i czytelne pisanie programów, które staną się zrozumiałe nie tylko dla autora. Jest to szczególnie przydatne przy bardziej rozbudowanych projektach i kooperacji z innymi członkami zespołu. Zacznijmy jednak od systemu pomocy, czyli jak ułatwić sobie życie.
System pomocy
O tym jak używać pełnego systemu pomocy była mowa w pierwszej części. Teraz kilka rad, które znacznie przyspieszą i ułatwią pisanie programów w MATLABie.
- Autouzupełnianie – w command window albo edytorze wystarczy wpisać pierwsze litery funkcji, a po naciśnięciu klawisza TAB, MATLAB albo uzupełni nazwę do końca, albo, jeżeli więcej funkcji zaczyna się od wprowadzonych liter, wyświetli listę sugerowanych funkcji.
- Pomoc kontekstowa #1 – jeżeli znamy nazwę funkcji ale nie pamiętamy jak jej użyć, to nie musimy przechodzić do systemu pomocy MATLABA aby to sprawdzić. Wystarczy, po wpisaniu nazwy funkcji nacisnąć klawisz F1, a wyświetli się treść opisu w okienku kontekstowym. Jest to szybki sposób sprawdzenia składni.
- Pomoc kontekstowa #2 – jeżeli nie znamy nazwy funkcji, a nie chcemy przechodzić do pełnej dokumentacji by ją wyszukać, można użyć function browser. Będąc w command window lub edytorze wystarczy nacisnąć skrót klawiaturowy Shift+F1, a otworzy się kontekstowe okno z listą wszystkich funkcji MATLABa. Teraz wystarczy zawęzić listę przez wyszukanie interesującego pojęcia.
Tworzenie wektorów i macierzy
Wektor wierszowy - tworzymy wpisując liczby po sobie, ewentualnie rozdzielając je przecinkiem:
X = [1 3 1 0.5 2]; % równoważne X = [1, 3, 1, 0.5, 2];
Wektor kolumnowy - tworzymy oddzielając liczby średnikiem:
Y = [23; 6; 10; 43];
Wektor wierszowy można zmienić w wektor kolumnowy (i odwrotnie) za pomocą operatora transpozycji:
Y = Y’;
Operator dwukropka - zamienia wektor wierszowy lub macierz w wektor kolumnowy, ale odwrotna operacja za pomocą tego operatora nie jest możliwa.
Y = Y(:); % macierz lub wektor wierszowy w wektor kolumnowy
Operator dwukropka może również służyć do tworzenia wektorów i macierzy, odwoływania się do określonych (lub wszystkich) elementów wektorów i macierzy lub indeksowania pętli. W każdym przypadku użycie tego operatora jest podobne i oznacza zakres zmienności wartości:
(3 : 2 : 11) % oznacza liczby: 3 5 7 9 11
Odwoływanie do elementów
Odwoływanie do elementów macierzy – poza tradycyjnym indeksowaniem, można użyć operatora end i dwukropka. End zawsze wskazuje na ostatni element macierzy w danym wymiarze. Natomiast operat dwukropka użyty do indeksowania powoduje wybór wszystkich elementów z danego wymiaru macierzy. Na przykład:
Z = [1 2 3 4 5 6 7 8 9 10]; Z(:, 2:end) ans = 2 3 4 5 7 8 9 10
Oznacza, że wybieramy wszystkie wiersze (operator : na pierwszej pozycji) i kolumny od 2 do ostatniej (użycie operatora end).
Wyrażenia warunkowe
W klasycznym podejściu do sprawdzania warunków różnego rodzaju używamy struktury if… else, często w połączeniu z pętlami for… end. MATLAB umożliwia znaczne uproszczenie takich obliczeń. Rozważmy przykład wyboru liczb większych od zera z danego wektora. W klasycznym podejściu wymagałoby to takiego programu:
N = 20; x = randn(1,N); indx = []; for k = 1:N if x(k) > 0 indx = [indx k]; end end x01 = x(indx)
** UWAGA: powyższy kod może być niepoprawnie wyświetlany w przeglądarce. Zamiast symbolu > należy wstawić znak większości >.
Jednak w MATLABie, warunek, możemy sformułować w postaci argumentu wektora:
x02 = x(x > 0)
** UWAGA: powyższy kod może być niepoprawnie wyświetlany w przeglądarce. Zamiast symbolu > należy wstawić znak większości >.
Efekt obydwu programów jest identyczny, przy czym ten drugi jest dużo krótszy i bardziej czytelny.
Skrypty - dobre praktyki
Podstawowa zasada jest prosta: piszemy programy w taki sposób aby inny programista mógł je zrozumieć. Aby tak było warto stosować kilka prostych zasad:
- Każdy skrypt zaczynamy od umieszczenie nagłówka w postaci komentarza. Nagłówek powinien co najmniej zawierać nazwę programu, jego wersję, autora, datę modyfikacji i opis.
- W programie obficie stosujemy komentarze, opisując zarówno zawartość zmiennych jak również wykonywane operacje. W MATLABIE komentarz zaczyna się od znaku %.
- Zmiennym nadajemy nazwy opisowe, np.: poziom_paliwa, a nie symboliczne np. h.
- Stosujemy dodatkowe funkcje MATLABowskiego edytora, czyli insert text markup. Najcześciej stosujemy podział programu na sekcje przez wprowadzenie podwójnego znaku komentarza %%.
Więcej na ten temat, oraz inne porady znajdziecie w drugiej części filmu: