Wprowadzenie do MATLABa
Transkrypt
Wprowadzenie do MATLABa
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 • operatory logiczne: < <= > >= == ~= all wszystkie elementy niezerowe any jakikolwiek element niezerowy isfinite isinf isnan element nieokreślony (NaN) isempty argument jest macierzą pustą • funkcje logiczne: » » if if A > 5 , ... all ( A > 5 ) , ... operator if any ( A > 5 ) , ... wyrażenie instrukcja wyboru switch wyrażenie , case wartość1 , polecenia case wartość2 , polecenia ... otherwise , polecenia end pętla for zmienna-iterowana = macierz-wartości , polecenia end • 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 , polecenia end » » 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) % t x % tego komentarza nie zobaczysz w helpie = [ 1 : 0.05 ; 4 * pi ] ; = 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 ]