Małgorzata Jakubowska Matlab MATrix LABoratory Mathworks Inc.
MATLAB pakiet oprogramowania matematycznego firmy MathWorks Inc. (www.mathworks.com) rozwijany od roku 1984 język programowania i środowisko do obliczeń naukowotechnicznych obszerny zestaw tematycznych bibliotek podprogramów (toolbox ów) obszerna dokumentacja (wiele tysięcy stron podręczników i pomoc wbudowana) oraz przykłady
MATLAB Zalety: architektura otwarta możliwość pisania własnych funkcji oraz modyfikacji wbudowanych możliwość rozszerzania zakresu działania z wykorzystaniem procedur dostępnych w internecie wykonywanie obliczeń naukowych i inżynierskich graficzna wizualizacja danych i wyników obliczeń przyjazne, interaktywne środowisko pracy
Zalety: MATLAB daje możliwość programowania bez konieczności rozpoznawania środowiska programistycznego (jak BASIC a nie jak C czy C++) jest często używanym narzędziem w badaniach naukowych jest powszechnie nauczany na uczelniach jest stale rozwijany i wzbogacany.
Tematyka toolboxów Matlaba SIMULINK - Symulacja układów dynamicznych Przetwarzanie i analiza Sygnałów Przetwarzanie i analiza Obrazów Sieci Neuronowe Logika rozmyta Statystyka Finanse i giełda Akwizycja danych Projektowanie filtrów Bazy danych Matematyka symboliczna
Tematyka toolboxów Matlaba Analiza falkowa i Fourier'a Optymalizacja Równania różniczkowe Sterowanie nieliniowe Sterowanie predykcyjne Analiza chemiczna Geografia i mapy Funkcje sklejane (spline) Metoda elem. skończonych Teoria grafów........
MATLAB okno programu Aktualny katalog Obszar roboczy Okno Historia komend
MATLAB podstawowym typem danych w MATLABie jest tablica (macierz) o elementach rzeczywistych lub zespolonych wszystkie zmienne w MATLABie są traktowane jak macierze wektory i skalary są szczególnymi przypadkami macierzy nazwy zmiennych rozpoczynają się od litery, a po niej mogą być litery, cyfry i znaki podkreślenia pamiętanych jest 31 pierwszych znaków
Nazwy i definicje zmiennych MATLAB rozróżnia duże i małe litery polecenia standardowe należy pisać małymi literami do nazywania własnych programów i zmiennych można używać małych i dużych liter definiowanie typu i wymiarów macierzy odbywa się automatycznie - przez rozpoznanie rodzaju wpisanych wartości MATLAB generuje zmienną automatycznie podczas jej pierwszego użycia aby sprawdzić wartość istniejącej już zmiennej, należy w wierszu poleceń wpisać jej nazwę.
Liczby Stałopozycyjne - z opcjonalnym użyciem znaku + lub oraz kropki dziesiętnej Zmiennopozycyjnej -z użyciem znaku e lub E poprzedzającego wykładnik potęgi 10, np. 1e2=100 Do zapisu części urojonej liczb zespolonych używa się stałej i lub j.
Polecenia po wydaniu polecenia i naciśnięciu klawisza Enter Matlab natychmiast wyświetla jego wynik umieszczenie po poleceniu średnika spowoduje wykonanie obliczeń, ale bez zwracania wyniku polecenie powinno się mieścić w jednym wierszu kilka poleceń w jednym wierszu oddzielamy od siebie przecinkami lub średnikami.
Proste obliczenia Komendy wprowadzamy w oknie interpretera po znaku zachęty >>. >> 5+7 ans = 12 >> a=13 a= 13 >> x=sin(pi/2) x= 1 Komenda zakończona średnikiem wykona się lecz nie będzie wyświetlony wynik. >> x=sin(pi/2); >>
>> a=10 a = 10 >> b=20 b= 20 >> c=30 c= 30 >> the_average=(a+b+c)/3 the_average= 20 Proste obliczenia
>> s=3.1415 s= 3.1415 Skalar, wektor, macierz >> w=[7, 13, 12] w= 7 13 12 >> w=[7 ; 13 ; 12] w= 7 13 12 >> m=[2,12,44,14 ; 7,17,27,101 ; 3,13,33,202] m= 2 12 44 14 7 17 27 101 3 13 33 202
Wprowadzanie wektorów <zmienna> =<wartość początkowa>:<krok>:<wartość końcowa> >>czasi=0:100:2300; wprowadzi wektor o długości 24 elementy zawierający wartości 0, 100, 200,..., 2300 >>czasi(3) ans= 200 >>czasi(24) ans= 2300
Wprowadzanie macierzy elementy w wierszu macierzy muszą być oddzielane spacją lub przecinkami średnik lub znak nowego wiersza kończy wiersz macierzy i powoduje przejście do następnego cała lista elementów musi być ujęta w nawiasy kwadratowe. >>A=[1:10; 2:2:20] A= 1 2 3 4 5 6 7 8 2 4 6 8 10 12 14 16
Operacje na macierzach i ich elementach Operacje macierzowe operacje na macierzach określone regułami algebry liniowej. X*Y mnożenie macierzy, zgodna z zasadami rachunku macierzowego (liczba kolumn X jest równa liczbie kolumn Y) X+Y sumowanie macierzy X-Y odejmowanie macierzy X transpozycja macierzy
Operacje na macierzach i ich elementach Operacje tablicowe operacje na elementach macierzy. X.*Y mnożenie elementów wektorów lub macierzy o tych samych indeksach tzn. X(i,j)*Y(i,j) X.+Y sumowanie elementów macierzy o tych samych indeksach X.-Y odejmowanie elementów macierzy o tych samych indeksach
Operacje na macierzach i ich elementach >> X=[1 2 3]; Y=[4 5 6]; >>Y % transpozycja wektora ans= 4 5 6 >>X*Y ans= >>X.*Y ans= 32 4 10 18
Funkcje matematyczne Wbudowane - część jądra pakietu, do których użytkownicy nie mają dostępu (np. sqrt) Implementowane w m-plikach - przechowywane w ogólnie dostępnych plikach (np. sinh); takie m-pliki użytkownicy mogą tworzyć sami.
Ważniejsze elementarne funkcje matematyczne abs -wartość bezwzględna funkcje trygonometryczne, hiperboliczne i odwrotne ceil - zaokrąglenie w górę exp - e do x fix - zaokrągla w stronę zera floor - zaokrągla w dół gcd -największy wspólny podzielnik imag -część urojona lcm - najmniejsza wspólna wielokrotność log - logarytm naturalny log2 - logarytm o podstawie 2 log10 - logarytm o podstawie 10 mod - reszta z dzielenia round - zaokrągla do najbliższej całkowitej sign - znak sqrt- pierwiastek
Operacje graficzne
Wykresy dwuwymiarowe Polecenie plot(x,y) plot(y) plot(x,y,s) Opis rysuje wykres elementów wektora y względem elementów wektora x rysuje wykres elementów wektora y, przyjmując x=1:length(y) rysuje wykres y(x) z określeniem dokładnego wyglądu linii; s-łańcuch zawierający kody
Rysowanie wykresów >> x=[1 2 3 4 5] x=[1 2 3 4 5] >> y=[25 0 20 5 15] y=[25 0 20 5 15] >>plot(x, y);
Rysowanie wykresów parabola >> x=-5 :.1 : 5; >> y=x.^ 2; >>plot(x, y); >>xlabel( x-axis ); >>ylabel( y-axis ); >>title( A Parabola ); >>grid on;
Kilka wykresów na rysunku >> x=-10 :.05 : 10; >> line = 5.* x; >> parabola = x.^ 2; >> exponential = exp(x); >> absolute_value=abs(x); >> subplot(2,2,1); plot(x, line)); >> title( Here is the line ); >> subplot(2,2,2); plot(x, parabola)); >> title( Here is the parabola ); >> subplot(2,2,3); plot(x, exponential)); >> title( Here is the exponential ); >> subplot(2,2,4); plot(x, absolute value)); >> title( Here is the absolute value );
Wykres 3D Matlab zawiera dużą liczbę wbudowanych funkcji służących do wizualizacji obiektów trójwymiarowych. M.in. do tworzenia wykresów krzywych przestrzennych (plot3), siatek (mesh), powierzchni (surf) oraz wykresów konturowych (contour). Aby uzyskać w Matlabie pomoc na temat funkcji 3D należy w oknie komend wydać komendę help graph3d. Polecenie plot3(x,y,z,s) generuje trójwymiarową krzywą złożoną z punktów (xi, yi, zi), których współrzędne zostały określone w wektorach x, y, z. Wektory muszą być tej samej długości. Funkcja ta jest odpowiednikiem funkcji plot w grafice dwuwymiarowej.
Wykres 3D meshgrid(x,y) - jako argumenty podajemy ciągi (wektory) wartości x oraz y a w wyniku uzyskujemy dwie macierze zawierające łącznie wszystkie pary współrzędnych dla których mają być wyznaczane wartości funkcji zmiennych x, y. mesh(x,y,z,c) rysuje powierzchnię opisaną macierzami x, y, z w postaci kolorowej siatki o polach wypełnionych kolorem tła; elementy macierzy c określają kolory linii poszczególnych pól.
Wykres 3D
Wykres 3D
Programowanie w Matlabie
Instrukcja warunkowa if warunek polecenia1 elseif warunek polecenia2 else polecenia3 end; Przykład >> if (a ~= 0) c=b/a; else c=12; end;
Operatory porównania a==b a~=b a<b a>b a<=b a>=b równy nierówny mniejszy większy mniejszy lub równy większy lub równy
Operatory logiczne operator opis relacja a b a&b ~a alternatywa koniunkcja negacja a lub b a i b nie a
Instrukcja pętli while warunek polecenia end; Instrukcja wykonuje polecenia tak długo, dopóki warunek jest spełniony. Przykład >> i=1; >> while i<10 p(i)=i^2; i=i+2; end;
for zmienna = macierz wartości end; polecenia Instrukcja pętli ALE NAJCZĘŚCIEJ for zmienna = wartość początkowa : krok : wartość końcowa polecenia end; Instrukcja powtarza wykonanie poleceń dla zmiennej przyjmującej wartości od wartości początkowej do wartości końcowej, zmieniając co krok. Przykład >> for i =1:5 p(i) = (2*i)^2; end;
M-pliki własne programy (wieloliniowe) można pisać w edytorze MATLABa lub w notatniku zapisywane są do plików z rozszerzeniem *.m uruchamiane (wywoływane) są przez wpisanie nazwy pliku (bez rozszerzenia.m) w oknie komend Rozróżniamy: skrypty - operujące na zmiennych przestrzeni roboczej Matlaba funkcje - posiadające zmienne lokalne
Skrypty Skrypt jest plikiem tekstowym o rozszerzeniu.m (m-plikiem), zawierającym polecenia i instrukcje Matlaba. Skrypty nie pobierają żadnych argumentów wejściowych ani nie zwracają argumentów wyjściowych - mogą tylko operować na zmiennych dostępnych w przestrzeni roboczej Matlaba.
Przykład m-pliku skryptowego M-pliki skryptowe % po znaku procentu są tzw. komentarze % program rozwiązywania równania kwadratowego a=input('a='); b=input('b='); c=input('c='); delta = b*b-4*a*c; if delta<0 disp('brak pierwiastków rzeczywistych'); else x1=(-b-sqrt(delta))/(2*a); x2=(-b+sqrt(delta))/(2*a); disp('x1='); disp(x1); disp('x2='); disp(x2); end
Funkcje Pierwszy wiersz m-pliku musi zawierać definicję nowej funkcji: słowo kluczowe function nazwę funkcji - musi być taka sama, jak nazwa pliku (bez rozszerzenia.m), w którym znajduje się funkcja wartości funkcji (lista argumentów wyjściowych) parametry funkcji (lista argumentów wejściowych).
Funkcje function [lista parametrów wejść] = nazwa funkcji (lista param wejść) function c = pitagoras(a,b); c2 = a.^2 + b.^2; % c2 zmienna lokalna C = sqrt(c2); Funkcję zapisać w pliku pitagoras.m Wywołanie funkcji: >> x=3; y=4; z=pitagoras(x,y)
Dziękuję za uwagę!