dr Tomasz ciężor Wydział Inżynierii rodowiska Politechnika Krakowska Podstawy programowania wjęzyku MatLab wg: R. Jankowski, I. Lubowiecka, W. Witkowski, Politechnika Gdańska, Wydział Inżynierii Lšdowej, Gdańsk 2003 M.Czajka Ćwiczenia. MATLAB, wyd. Helion 2005 W. Regel Obliczenia symboliczne i numeryczne w programie MATLAB, wyd. MIKOM, Warszawa 2004 rodowisko i programowanie w języku MATLAB MATLAB -pakiet obliczeniowy firmy MathWorks jest przeznaczony do wykonywania różnorodnych obliczeń numerycznych. Serce pakietu stanowi interpreter języka umożliwiajšcy implementację algorytmów numerycznych oraz biblioteki podstawowych działań na macierzach (odwracanie, dodawanie/odejmowanie, wartoci własne itp.). Podstawowym typem danych jest macierz, stšd nazwa MATrix LABoratory. Pakiet posiada obszerne biblioteki dodatkowych procedur umożliwiajšce rozwišzywanie typowych problemów obliczeniowych. Prosta budowa okienkowa ułatwia korzystanie z programu. Łatwa i estetyczna jest wizualizacja wyników w postaci dwu-i trójwymiarowych wykresów. Dodatkowš zaletš pakietu MATLAB jest możliwoć przeprowadzenia obliczeń symbolicznych (na wzorach). Wprowadzenie do pracy w rodowisku języka MATLAB Praca w rodowisku języka MATLAB polega na wydawaniu poleceń, które po zatwierdzeniu wykonywane sš przez interpreter. Większš liczbę instrukcji można zapisać w zbiorze tekstowym zwanym skryptem (pliki z rozszerzeniem .m). Przykłady poleceń Podstawienie: ť a=3; powoduje utworzenie zmiennej ao wartoci 3. UWAGA: rednik po poleceniu powoduje, że wartoć będšca wynikiem nie będzie wywietlana na ekranie. ť b=sin(a) b= 0.1411 oblicza wartoć funkcji sinus dla zmiennej a, wynik zapisuje do zmiennej b i wywietla na ekranie. Jeżeli nie podano nazwy zmiennej to wynik działania jest umieszczany w standardowej zmiennej ans, np.: ť cos(pi/3) ans = 0.5000 Utworzona (zdefiniowana) zmienna jest pamiętana od momentu utworzenia, aż do chwili jej usunięcia. Możliwa jest przy tym nie tylko zmiana wartoci, ale również rozmiaru zmiennej. Nazwy zmiennych i informacje o nich można uzyskać wywołujšc funkcje who (wylicza zmienne) i whos (podaje nazwy, rozmiary, iloć zajmowanej pamięci i klasę zmiennych). Usunięcie zmiennej z pamięci: clear a-usuwa zmiennš a; clear-usuwa wszystkie zmienne znajdujšce się w pamięci. Zapisanie zmiennych na dysku: save nazwa_pliku(domylnie przyjmowane jest rozszerzenie .mat). Wczytanie danych z pliku dyskowego: load nazwa_pliku Korzystanie z podręcznej pomocy podajšcej opis funkcji: help nazwa_funkcji Zawartoć aktualnego katalogu można wywietlić używajšc funkcji dirlub ls Do zmiany katalogu służy polecenie: cd nazwa_katalogu Liczby rzeczywiste i ich formaty Podstawowym typem dla elementów macierzy wykorzystywanym przez MATLAB sš liczby rzeczywiste. Maksymalnš i minimalnš wartoć liczby rzeczywistej dodatniej można poznać za pomocš funkcji realmaxi realmin. Do okrelenia sposobu, w jaki liczby rzeczywiste sš przedstawione na ekranie służy polecenie format postać_liczby, gdzie postać_liczby okrela postać, w jakiej liczby rzeczywiste będš wywietlane na ekranie: format short do 4 miejsca po przecinku format long do 14 miejsca po przecinku format short e do 4 miejsca po przecinku w zapisie cecha-mantysa format long e do 14 miejsca po przecinku w zapisie cecha-mantysa format short g do 4 miejsca po przecinku format long g wszystkie miejsca znaczšce format hex w zapisie szesnastkowym format bank do 2 miejsc po przecinku format rat jako ułamek zwykły Przykład: Przedstaw liczbę 2,5 w różnej postaci używajšc funkcji format. ť format short ť 2.5 ans = 2.5000 ť format short e ť 2.5 ans = 2.5000e+000 ť format long ť 2.5 ans = 2.50000000000000 Pomocne zmienne Matlaba pi wartoć liczby . date, clock aktualna data i czas NaN wartoć nieokrelona Inf nieskończonoć Liczby zespolone Matlab bez problemu rozpoznaje liczby zespolone, i wie, jakiego typu jest nowa zmienna: Przykład: ť x=2+4i x= 2.0000 + 4.0000i ť y=-3-12i y= -3.0000 -12.0000i ť z=x+y z= -1.0000 -8.0000i Macierze ˇ Definicja macierzy przez wyliczenie elementów: Przykład: ťA=[2 22 1; 12 3 1]; lub: ťA=[2 22 1 12 3 1] A= 22211231 Poszczególne elementy macierzy oddziela się spacjami, a wiersze rednikami lub umieszcza się je w oddzielnych liniach. ˇ Definicja macierzy przez wygenerowanie elementów: A=[min:krok:max] Polecenie generuje wektor poczynajšc od elementu o wartoci min, kończšc na elemencie o wartoci max z krokiem krok. Jeżeli parametr krok zostanie pominięty, przyjmuje się,iż krok=1. Przykład: Wygeneruj macierz dwuwierszowš o wyrazach od 1 do 10 w pierwszym wierszu i o wyrazach od 2 do 20 (co 2) w wierszu drugim. ť A=[1:10; 2:2:20] A= 1234 5 6 78 910 24 6 8 1012 1416 18 20 Definicja macierzy wykorzystujšca elementy innych macierzy: Przykład: Utwórz macierz D budujšcjš ze zdefiniowanych macierzy A, B i C. ťA=[1 41; 2 01]; ť B=[3 1; 4 1]; ťC=[1 22 0 1;2 4 7 10]; ť D=[A B; C] D= 14131 20141 12201 24710 UWAGA: Przy takim budowaniu macierzy należy pamiętać o zgodnoci wymiarów. Wymiar i wywietlanie macierzy [n,m]=size(A) zwraca liczbę kolumn n i wierszy m macierzy A; n=length(B) zwraca wymiar wektora B (lub większy z wymiarów macierzy B); A lub disp(A) pokazuje macierz A na ekranie; Funkcje wspomagajšce konstruowanie macierzy ˇ Definicja macierzy jednostkowej: Przykład: Utwórz kwadratowš macierz jednostkowš A o wymiarze 3×3. ť A=eye(3) A= 100 010 001 ˇ Definicja macierzy wypełnionej jedynkami: Przykład: Utwórz macierz A o wymiarze 2×3 wypełnionej jedynkami. ť A=ones(2,3) A= 111 111 ˇ Definicja macierzy wypełnionej zerami: Przykład: Utwórz macierz A o wymiarze 3×2 wypełnionej zerami. ť A=zeros(3,2) A= 000 000 Dostęp do elementów macierzy ˇ Odwołanie do elementów: Przykład: ťA=[1 23; 0 98; 1 1 0] A= 123 098 110 ť A(2,3) odwołanie do elementu w wierszu 2 i kolumnie 3; ans = 8 ť A(3,2) odwołanie do elementu w wierszu 3 i kolumnie 2 ans = 1 ť A(:,2) odwołanie do kolumny 2 ans = 2 9 1 ť A(3,:) odwołanie do wiersza 3 ans = 110 ť A(:) odwołanie do wszystkich danych w formie wektora ans = 1 0 1 2 9 1 3 8 0 ˇ Wybór największego elementu max(A) zwraca największy element wektora A. W przypadku gdy A jest macierzš, zwraca wektor wierszowy, którego elementami sš maksymalne elementy z każdej kolumny A Przykład: ť max(A) ans = 198 ˇ Wybór najmniejszego elementu min(A) zwraca najmniejszy element wektora A. W przypadku gdy A jest macierzš, zwraca wektor wierszowy, którego elementami sš maksymalne elementy z każdej kolumny A Przykład: ť min(A) ans = 010 ˇ Obliczanie wartoci redniej elementów mean(A) zwraca redniš arytmetycznš elementów wektora A. W przypadku gdy A jest macierzš, zwraca wektor wierszowy, którego elementami sšrednie arytmetyczne elementów z każdej kolumny A Przykład: ť mean(A) ans = 0.6667 4.0000 3.6667 ˇ Odwołanie do podmacierzy Przykład: ťA=[1 23 4 5 6; 0 9 87 6 5;1 1 0 02 2] A= 123456 098765 110022 ť B=A(:,[1:3 5]) utworzenie macierzy B poprzez pobranie z macierzy A kolumn: 1-3 oraz 5 B= 1235 0986 1102 ť B=A([1 3],1:2:5) utworzenie macierzy B z elementów macierzy A leżšcych na przecięciu wierszy 1 i 3 z kolumnami 1, 3 i 5 B= 135 102 ˇ Usuwanie wektora z macierzy: Przykład: ťA=[1 23 4; 45 6 7] A= 1234 4567 ť A(2,:)=[ ] usuwa drugi wiersz z macierzy A A= 1234 ť A(:,1:2)=[ ]-usuwa dwie pierwsze kolumny z macierzy A A= 34 Działania na macierzach ˇ Suma i różnica macierzy Przykład: Zdefiniuj dwie macierze A i B, a następnie oblicz ich sumę, różnicę oraz dodaj do elementów macierzy A liczbę 2. Definicja macierzy: ťA=[1 -1 2; -23 1] A= 1-1 2 -23 1 ťB=[1 11; 0 -22] B= 111 0-2 2 Suma: ť A+B ans = 2 -2 0 1 3 3 Różnica: ť A-B ans = 0-2 1 -2 5-1 Dodanie do elementów macierzy A liczby 2: ť A+2 ans = 314 053 ˇ Mnożenie macierzy Przykład: Zdefiniuj dwie macierze A i B, a następnie oblicz ich iloczyn oraz pomnóż elementy macierzy A przez 2. Definicja macierzy: ťA=[1 10; 2 11] A= 110 211 ť B=[2; 2; 2] B= 2 2 2 Iloczyn macierzowy: ť A*B ans = 4 8 Iloczyn macierzy przez liczbę: ť A*2 ans = 220 422 ˇ Odwracanie i transpozycja Przykład: Zdefiniuj macierz A, a następnie wyznacz macierz odwrotnš do niej i dokonaj transpozycji. ťA=[1 23; 0 98; 3 4 7] A = 1 2 3 0 9 8 3 4 7 ťinv(A) zwraca macierz odwrotnš do A ans = -15.5000 1.0000 5.5000 -12.0000 1.0000 4.0000 13.5000 -1.0000 -4.5000 ť A transponuje macierz A ans = 103 294 387 Przykład Zdefiniuj wektor kolumnowy A, a następnie oblicz sumę kwadratów elementów tego wektora. ť A=[1 2 3] A= 1 2 3 ť A*A ans = 14 Dział...
licha2