Wprowadzenie do MATLABa programowanie WYKŁAD Piotr Ciskowski
instrukcje sterujące instrukcja warunkowa: if instrukcja wyboru: switch instrukcje iteracyjne: for, while instrukcje przerwania: continue, break, return obsługa błędów: try, catch
instrukcja warunkowa if wyrażenie1, polecenia elseif wyrażenie2, polecenia else polecenia end
instrukcja warunkowa wyrażenia logiczne: wyrażenie operator wyrażenie operatory logiczne: < <= > >= == ~= funkcje logiczne: all wszystkie elementy niezerowe any jakikolwiek element niezerowy isfinite isinf isnan isempty» if A > 5,...» if all ( A > 5 ),... if any ( A > 5 ),... element nieokreślony (NaN) argument jest macierzą pustą
instrukcja wyboru switch wyrażenie, case wartość1, polecenia case wartość2, polecenia... otherwise, polecenia end
pętla for zmienna-iterowana = macierz-wartości, end polecenia for i = 1 : 10, for i = 50 : -2 : 0, for i = [ a, b, c ], for i = [ 5 8 3 6-3.4 78-345 ],
pętla while wyrażenie, end polecenia» s = 0 ;» while s ~= 100, s = s + 0.01 ; end przerwanie zapętlonego: Ctrl+C ^C
programy w MATLABie skrypty m-pliki plik.m funkcje w m-pliku o tej samej nazwie
programy w MATLABie instrukcje przydatne w m-plikach: input keyboard menu pause disp
programy w MATLABie komentarze: % w MATLABie mamy tylko jeden rodzaj komentarza % taki jak ten % on się ciągnie do końca linii
programy w MATLABie komentarze: np. skrypt w pliku sincos.m % przykładowy skrypt: sincos % generuje wektor liczb rzeczywistych t % i oblicza dla kolejnych wartości z tego wektora % wartości funkcji x=sin(t)+cos(t) % tego komentarza nie zobaczysz w helpie t = [ 1 : 0.05 ; 4 * pi ] ; x = sin ( t ) + cos ( t) ; % koniec
programy w MATLABie komentarze: np. skrypt w pliku sincos.m» help sincos przykładowy skrypt: sincos generuje wektor liczb rzeczywistych t i oblicza dla kolejnych wartości z tego wektora wartości funkcji x=sin(t)+cos(t)»
programy w MATLABie komentarze: np. skrypt w pliku funkcja.m function [x,y,z]=funkcja(a,b,c,d) % funkcja coś licząca: [x,y,z]=funkcja(a,b,c,d) % obszerny komentarz... for i=1:5,...» help funkcja funkcja coś licząca: [x,y,z]=funkcja(a,b,c,d) obszerny komentarz...»
programy w MATLABie nagłówek funkcji function [ x, y, z ] = funkcja ( a, b, c, d ) zmienne w skrypcie są globalne zmienne w funkcji są lokalne zmienne globalne w funkcji: function h = falling ( t ) global GRAVITY h = 1/2 * GRAVITY * t.^2 ; parametry nie mają określonych typów
zasady poprawnego programowania w MATLABie wektoryzacja MATLAB jest zoptymalizowany pod kątem obliczeń macierzowych wszystko, co się da, starajmy się zapisywać macierzowo czasem trzeba nad tym trochę pomyśleć dobry program w MATLABie to dużo operacji macierzowych i mało pętli for
zasady poprawnego programowania w MATLABie prealokacja jeśli wynik obliczeń ma być przechowywany w macierzy i potrafimy z góry określić jej spodziewaną wielkość, to lepiej przed rozpoczęciem obliczeń zadeklarować macierz zer i potem tylko ją wypełniać wynikami
zasady poprawnego programowania w MATLABie pozostałe zasady: MATLAB rozróżnia duże i małe litery w nazwach zmiennych stosuj nazwy zmiennych, które mówią cos o sobie w funkcji zmienne są lokalne nie zaśmiecamy przestrzeni roboczej zmiennymi roboczymi - trudniej o pomyłkę stosuj wcięcia stosuj komentarze pisz takie funkcje, które będą działać na macierzach i rozpoznawać parametry
zasady poprawnego programowania w MATLABie przykład: % porównanie efektywności obliczeń w pętli z obliczeniami macierzowymi % obliczanie wartości funkcji cosinus od -10 do +10 co 0.001 % 1. w pętli ze zwiększaniem macierzy wyników w każdym przebiegu % 2. w pętli z wcześniejszą rezerwacją macierzy na wynik % 3. macierzowo
zasady poprawnego programowania w MATLABie przykład: clear all ; t = -10 : 0.001 : 10 ; [ wierszy, kolumn ] = size ( t ) ; % w pętli z powiększaniem wektora wyników i = 0; t0 = clock ; for x = t, i = i + 1 ; y ( i ) = cos ( x ) ; end t1 = etime ( clock, t0 ) ;
zasady poprawnego programowania w MATLABie przykład: clear all ; t = -10 : 0.001 : 10 ; [ wierszy, kolumn ] = size ( t ) ; % z utworzonym najsampierw wektorem wyników i = 0 ; y = zeros ( wierszy, kolumn ) ; t0 = clock ; for x = t, i = i + 1 ; y ( i ) = cos ( x ) ; end t2 = etime ( clock, t0 ) ;
zasady poprawnego programowania w MATLABie przykład: clear all ; t = -10 : 0.001 : 10 ; [ wierszy, kolumn ] = size ( t ) ; % macierzowo t0 = clock ; y = cos ( t ) ; t3 = etime ( clock, t0 ) ;
zasady poprawnego programowania w MATLABie przykład: clear all ; t = -10 : 0.001 : 10 ; [ n, m ] = size ( t ) ; % porównanie czasów - sekundy [ t1 t2 t3 ]