MATLAB
Transkrypt
MATLAB
MATLAB MATLAB - wprowadzenie • MATLAB jest środowiskiem obliczeniowym przeznaczonym dla zastosowań inŜynierskich. Pozwala on na przeprowadzenie złoŜonych obliczeń numerycznych, zaawansowaną wizualizację wyników obliczeń i programowanie w języku wysokiego poziomu. • Nazwa MATLAB wywodzi się od interfejsu programowego pozwalającego na wykorzystanie procedur numerycznych (LINPACK i EISPACK) EISPACK) i jest skrótem od słów matrix laboratory. • Obecnie MATLAB jest najpopularniejszym narzędziem tego typu na świecie i znalazł szerokie zastosowanie w róŜnych dziedzinach nauki i techniki. Wśród tych zastosowań wymienić naleŜy cyfrowe przetwarzanie sygnałów, przetwarzanie obrazów, automatykę, automatykę, finanse i badania medyczne. medyczne. • Otwarta architektura MATLABMATLAB-a pozwala na jego łatwe rozszerzanie i tworzenie narzędzi zgodnych z wymaganiami kaŜdego uŜytkownika. 1 MATLAB – Obliczenia Język wysokiego poziomu w połączeniu z szeroką gamą predefiniowanych funkcji matematycznych pozwala na implementację dowolnego algorytmu za pomocą kilku linii kodu. W MATLABMATLAB-ie zaimplementowano między innymi: innymi: • operacje macierzowe, • analizę Fouriera, Fouriera, Wavelet i inne, • rozwiązywanie równań róŜniczkowych, • obliczenia na macierzach rzadkich, • funkcje trygonometryczne i inne funkcje matematyczne, • analizę i prezentację danych spróbkowanych nierównomiernie, • obliczenia symboliczne, • interpolację. Istnieje moŜliwość rozszerzenia MATLABMATLAB-a o nowe funkcje MATLAB pozwala na dodanie nowych funkcji w postaci mm-plików napisanych w języku MATLABMATLAB-a. MATLAB – Programowanie Zalety programowania w MATLABMATLAB-ie • MATLAB stwarza moŜliwość skoncentrowania się nad rozwiązaniem postawionego problemu, a nie na technicznych szczegółach programowania takich jak zarządzanie pamięcią czy deklaracje zmiennych. • Wszystkie zmienne deklarowane są dynamicznie. • Programy i procedury nie wymagają kompilacji czy linkowania i mogą być wykonywane natychmiast po dokonaniu zmian w pliku • MoŜna zdefiniować dowolne zmienne począwszy od skalarów, poprzez wielowymiarowe macierze a skończywszy na złoŜonych strukturach. • Z MATLABMATLAB-em pracuje się w sposób interaktywny wprowadzając kaŜde polecenie do interpretera lub w sposób wsadowy pisząc programy i procedury. 2 MATLAB – Wizualizacja • Matlab dostarcza bezpośredni dostęp do wyspecjalizowanych funkcji graficznych niezbędnych w zastosowaniach inŜynierskich i badaniach naukowych. • Funkcje graficzne pozwalają na przedstawienie danych o róŜnym charakterze. • Dostępne są trzy i czterocztero-wymiarowe wykresy umoŜliwiające wizualizację wielowymiarowych macierzy czy teŜ wielkości zespolonych. • Zaimplementowano efektywne algorytmy interpolacji danych spróbkowanych w sposób nierównomierny. • Dowolna grafika wytworzona w MATLABMATLAB-ie moŜe zostać zaimportowana do innej aplikacji (np (np.. MS Word). • KaŜdy obiekt graficzny moŜe być modyfikowany w szerokim zakresie w trybie interaktywnym lub wsadowym poprzez zmianę odpowiednich atrybutów. MATLAB – Analiza danych 3 MATLAB – wykresy 2D 1 1 0.8 0.6 0.9 0.4 0.8 0.2 0.7 1 0.6 0.8 -0.4 0.5 0.6 -0.6 0.4 0.4 0.3 0.2 0 -0.2 -0.8 -1 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 0.2 0 0.1 -0.2 -0.4 0 -3 1.5 -2 -1 0 1 2 3 -0.6 -0.8 1 -1 90 0 0.5 0.5 1 2 3 4 5 6 7 8 9 10 60 120 0.375 0 0.25 150 30 0.35 -0.5 0.3 0.125 0.25 -1 180 -1.5 -2.5 0.2 0 0.15 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 0.1 0.05 210 330 0 -0.05 -0.1 240 300 -0.15 270 0 0.5 1 1.5 2 2.5 3 3.5 4 MATLAB – wykresy 3D 25 1.5 20 1 15 0.5 10 0 -0.5 5 5 10 15 20 25 -1 -1.5 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 4 MATLAB – wykresy specjalne Wykres funkcji zespolonej Polecenie rysujące wykres z=cplxgrid[20]; cplxmap[z,z ]; cplxmap[z,z]; F(z) = z 5 Wykres funkcji zespolonej F(z) = [z^4-1]^[1/4] Polecenie rysujące wykres z=cplxgrid[20]; cplxmap[z,[z.^4 cplxmap[z,[z.^4--1].^[1/4]]; Cztery zera pierwiastka czwartego stopnia z jedności Wykres funkcji zespolonej F(z) = z^3 Polecenie rysujące wykres z=cplxgrid[20]; cplxmap[z,z.^3]; Trzy max dla sześciennych pierwiastków z jedności 6 MATLAB – Analiza danych • MATLAB umoŜliwia umoŜliwia akwizycję, gromadzenie, przetwarzanie i prezentację danych, sygnałów i obrazów pochodzących z róŜnego rodzaju źródeł. • Istnieje moŜliwość interaktywnego eksperymentowania z procedurami przetwarzania i wizualizacji danych. danych. Dzięki temu, Ŝe komendy wykorzystywane w trybie interaktywnym i w trybie wsadowym są identyczne, to polecenia wydawane w trakcie eksperymentów, moŜna natychmiast wykorzystać do tworzenia procedur zapisanych w postaci mm-plików. • Procedury słuŜące do przetwarzania danych to między innymi: • procedury do interpolacji i decymacji, • procedury do ekstrakcji wybranej części danych, • procedury do skalowania i uśredniania, • procedury do obcinania i porównywania, • procedury do wygładzania i filtracji. MATLAB – okna robocze Edytor Pomoc Okno graficzne Zmienne Historia Interpreter 7 MATLAB – główne okno Zmienne w Matlabie - MACIERZE • W Matlabie wszystkie uŜ uŜywane zmienne są są macierzami. • Przez macierz rozumiemy zbió zbiór wartoś wartości numerycznych odpowiednio zorganizowanych w wierszach i kolumnach. Liczba kolumn lub wierszy okreś określana jest dowolną dowolną liczbą liczbą cał całkowitą kowitą, a jedynym ograniczeniem jest rozmiar dostę dostępnej pamię pamięci. • Pierwszy rozmiar macierzy okreś określa liczbę liczbę wierszy, a druga liczba słuŜy do okreś określenia liczby kolumn. Przykł Przykładowo macierz o wymiarach 3 x 4 zawiera 3 wiersze i 4 kolumny, czyli łącznie łącznie 12 elementó elementów. • Skalar w Matlabie jest szczegó szczególnym przypadkiem macierzy o rozmiarze 1 x 1. • Wektor o n elementach jest definiowany jako macierz zawierają zawierająca 1 wiersz (n (n x 1) lub macierz zawierają zawierająca 1 kolumnę kolumnę (1 x n) – wektor kolumnowy. 8 Zmienne w Matlabie - MACIERZE • Nazwa zmiennej w Matlabie moŜ moŜe być być cią ciągiem dowolnych cyfr i liter o dł długoś ugości nie przekraczają przekraczającej 19 znakó znaków. Pierwszy znak nie moŜ moŜe być być cyfrą cyfrą i nazwa nie moŜ moŜe zawierać zawierać spacji oraz niektó niektórych znakó znaków np. np. ‘ + – . • Pamię Pamiętać tać naleŜ naleŜy, Ŝe w Matlabie rozró rozróŜniane są są duŜ duŜe i mał małe litery. Tak wię więc zmienne o nazwie c i C są dwiema ró róŜnymi zmiennymi ! Podobnie MID i Mid to takŜ Ŝ e dwie ró ó Ŝ ne zmienne. tak r • Liczby zespolone • W Matlabie zmienne i oraz j automatycznie predefiniowane są są jako sqrt(sqrt(-1) Zmienne w Matlabie - MACIERZE • PoniŜ PoniŜej przedstawiono kilka przykł przykładó adów macierzy zdefiniowanych w Matlabie. Matlabie. Proszę Proszę zwró zwrócić cić uwagę uwagę na rolę rolę nawiasó nawiasów kwadratowych w definicji macierzy. c = 5.66 lub c = [5.66] c – definicja skalara czyli macierzy 1x1 x = [ 3.5, 33.22, 24.5 ] x – wektor wierszowy czyli macierz 1x3 x1 =[ 2; x1 – wektor kolumnowy czyli macierz 4x1 5; 3; -1] A = [ 1 2 4; A – macierz o rozmiarze 4x3 2 -2 2; 4 wiersze i 3 kolumny 0 3 5; 5 4 9] 9 Zmienne w Matlabie - MACIERZE • Dostę Dostęp do poszczegó poszczególnych elementó elementów macierzy jest moŜ moŜliwy poprzez wywoł wywołanie typu A(i,j) A(i,j), przykł przykładowo zmiana wartoś wartości jednego z elementó elementów macierzy moŜ moŜe nastą nastąpić pić za pomocą pomocą komendy A(4,1)=5 • Macierz wyś wyświetlana jest w Matlabie z zachowaniem struktury macierzy. • Macierze mogą mogą być być definiowane w ró róŜny sposó sposób: Przykł Przykład • Macierz x o rozmiarze 1x3, o elementach: x(1)=2, x(2)=4 i x(3)=x(3)=-1. x = [ 2 4 -1 ] lub x = [ 2,4,2,4,-1 ] • Wykonanie polecenia nastę następuje po naciś naciśnię nięciu Enter • Kolejne elementy macierzy mogą mogą być być oddzielone spacjami lub przecinkami. Zmienne w Matlabie - MACIERZE Macierz y o rozmiarach 2x4 o elementach: y(1,1)=0, y(1,2) = y(1,3) = 2, y(1,4) = 3, y(2,1) = 5, y(2,2) = -3, y(2,3) = 6, y(2,4) = 4 moŜ moŜe zostać zostać zdefiniowana w nastę następują pujący sposó sposób: y = [ 0, 2, 2, 3; 5, -3, 6, 4 ] lub y = [ 0, 2, 2, 3 ; 5, -3, 6, 4 ] Średnik "; ";" jest uŜ uŜywany do do rozdzielenia wierszy definiowanej macierzy jeś jeśli definicja wprowadzana jest w jednej linii. Wartoś Wartości macierzy zdefiniowane mogą mogą być być równieŜ wnieŜ za pomocą pomocą wyraŜ wyraŜenia, np.: np.: a = [ sin(pi/2) sin(pi/2) sqrt(2) 3+4 6/3 exp(2) ] 10 Zmienne w Matlabie - MACIERZE Nowa macierz moŜ moŜe zostać zostać równieŜ wnieŜ utworzona przy wykorzystaniu wcześ wcześniej zdefiniowanych macierzy. Przykł Przykładowo korzystają korzystając z poprzednio zdefiniowanej macierzy x utworzono macierz x1: x1: Polecenie: x1 = [ x 5 8 ] generuje macierz: x1 = [ 2 4 -1 5 8 ] WyraŜ WyraŜenie x(5) = 8 Powoduje dodanie nowego elementu macierzy x x = [ 2 4 -1 0 8 ] i dodatkowo automatycznie wstawiony zostaje element x(4) ró równy zero. Zmienne w Matlabie - MACIERZE Nowa macierz moŜ moŜe zostać zostać utworzona ró równieŜ wnieŜ z innych macierzy: Polecenia: c=[4 5 6 3] z = [ y;c ] dają dają w wyniku: z=[0 2 2 3 5 -3 6 4 4 5 6 3] Po kaŜ kaŜdej wykonanej komendzie (po naciś naciśnię nięciu Enter) Enter) Matlab wyś wyświetla rezultat wykonywanej komendy. Efekt wyś wyświetlania efektu dział działania komendy moŜ moŜna zablokować zablokować zakań zakańczają czając linię linię polecenia średnikiem. z=[y;c]; 11 Zmienne w Matlabie - MACIERZE Macierze mogą mogą być być równieŜ wnieŜ generowane za pomocą pomocą odpowiednich funkcji konstruują konstruujących, przykł przykładowo: zeros - tworzy macierz zerową zerową ones - tworzy macierz jedynek eye - tworzy macierz z jedynkami na przeką przekątnej rand - tworzy macierz z liczbami losowymi Funkcje te wywoł wywołane z jednym parametrem tworzą tworzą macierz kwadratową kwadratową o zadanym wymiarze, z dwoma odpowiednią odpowiednią macierz prostoką prostokątną tną. Macierze mogą mogą być być równieŜ wnieŜ konstruowane w wyniku „programowania” programowania” Przykł Przykładowo stosują stosując polecenie for for i=1:10, for j=1:10, t(i,j) t(i,j) = i/j; end end Instrukcje sterujące - IF Przykład instrukcji if if a>0 disp('a is greater then 0') else disp('a is smaller then 0') end Aby dokonać sprawdzenia czy dwie macierze są sobie równe nie moŜna moŜna zastosować polecenia A==B a naleŜy się posłuŜyć funkcją isequal Przykład: if isequal(A,B), isequal(A,B), disp('a is the same as b') end 12 Instrukcje sterujące - switch , case Instrukcja switch powoduje wykonanie okreś określonej grupy instrukcji w zaleŜ zaleŜnoś ności od wartoś wartości zmiennej sterują sterującej. Instrukcja case słuŜy do okreś określenia tych grup, a polecenie end zamyka obszar dział działania polecenia switch. switch. Ogó Ogólna postać postać instrukcji switch: switch: switch switch_expr case case_expr instrukcje case {case_expr1, case_expr2, case_expr3,...} instrukcje otherwise, otherwise, instrukcje end Instrukcje sterujące – switch, case Przykł Przykład 1 Przykł Przykład 2 switch action case ‘situat1’ situat1’ disp(‘ disp(‘Action for situation 1’) case ‘situat2’ situat2’ disp(‘ disp(‘Action for situation 2’) case ‘situat3’ situat3’ disp(‘ disp(‘Action for situation 3’) otherwise error('This is impossible') impossible') end switch b case 0 a=sin(x) a=sin(x) case 1 a=cos(x) a=cos(x) case 2 a=tan(x) otherwise a=0; end 13 Instrukcje sterujące - for Instrukcja for powoduje powtó powtórzenie wykonania zbioru instrukcji zadaną zadaną liczbę liczbę razy. Polecenie end zamyka obszar dział działania polecenia for. for. Przykł Przykład for i = 1:m for j = 1:n H(i,j) ); H(i,j) = 1/(i+j 1/(i+j); end end Instrukcje sterujące – while, break Instrukcja while powoduje powtó powtórzenie wykonania zbioru instrukcji dopó dopóki speł spełniony jest warunek. Polecenie end zamyka obszar dział działania polecenia while. while. Ogó Ogólna postać postać polecenia while while warunek instrukcje end Instrukcja break pozwala przerwać przerwać wykonywanie pę pętli spowodowanej poleceniami for lub while 14 Instrukcje sterujące – while, break, if Przykł Przykład a = 0; fa = -Inf; Inf; b = 3; fb = Inf; Inf; while bb-a > eps*b x = (a+b)/2; fx = x^3x^3-2*x2*x-5; if fx == 0 break elseif sign(fx) == sign(fa) a = x; fa = fx; else b = x; fb = fx; end end Instrukcje – clear, clc • W Matlabie dostę dostępna jest funkcja któ która pozwala na usunię usunięcie z pamię pamięci zbę zbędnych zmiennych. jest to polecenie clear, clear, któ które uŜ uŜyte bez Ŝadnego argumentu powoduje USUNIĘ USUNIĘCIE WSZYSTKICH ZMIENNYCH z pamię pamięci. • Jeś Jeśli chcemy usunąć usunąć tylko wybrane zmienne to naleŜ naleŜy podać podać nazwy tych zmiennych jako argument tej funkcji. Przykł Przykładowo clear z MED A Opró Oprócz tej komendy wspomnieć wspomnieć naleŜ naleŜy w tym miejscu o komendzie clc któ która pozwala na wyczyszczenie okna poleceń poleceń. 15 Instrukcje – who, whos, format • Polecenia who, who, whos • Pozwalają Pozwalają na uzyskanie informacji o zmiennych znajdują znajdujących się się w pamię pamięci • Zmiana precyzji wyś wyświetlania wynikó wyników format • NiezaleŜ NiezaleŜnie od wybranej precyzji wyś wyświetlania wynikó wyników wszystkie operacje w Matlabie wykonywane są są na zmiennych typu double. • Zmianę Zmianę precyzji wyś wyświetlania moŜ moŜna uzyskać uzyskać uŜywają ywając polecenia format Przykład a=sqrt(2) format long, long, b=sqrt(2) a-b format short Instrukcje – save • śeby zapisać zapisać wartoś wartości zmiennej "x "x" do pliku tekstowego o nazwie "var_x.txt" var_x.txt" moŜ moŜna uŜ uŜyć polecenia save var_x.txt x –ascii ascii • śeby zapisać zapisać zmienną zmienną "x" do pliku w formacie Matlaba o nazwie "var_x.mat" var_x.mat" moŜ moŜna uŜ uŜyć polecenia save var_x x • śeby zapisać zapisać wszystkie zmienne do pliku w formacie Matlaba o nazwie "mysession.mat "mysession.mat"" moŜ moŜna uŜ uŜyć polecenia save mysession • Wczytywanie sesji i zmiennych z pliku na dysku • Do wczytania zmiennej (lub sesji) z pliku w formacie Matlaba zastosuj polecenie load. load. load mysession 16 Pomoc - help, lookfor • Aby uzyskać uzyskać pomoc na temat funkcji zastosuj polecenie help podają podając jako parametr nazwę nazwę funkcji help sin • Przeszukiwanie plikó plików pomocy w celu odnalezienia informacji zwią związanych z okreś określonym terminem czy teŜ teŜ funkcją funkcją moŜ moŜna uruchomić uruchomić stosują ą c polecenie lookfor. . stosuj lookfor lookfor sin • MoŜ MoŜna teŜ teŜ skorzystać skorzystać z systemu pomocy w formacie HTML. KONIEC WYKONAŁA : Agnieszka Moraczyńska ETI 9.1 0.025 0.02 0.015 0.01 0.005 0 -0.005 -0.01 -0.015 -0.02 -0.04 -0.03 -0.02 -0.01 0 0.01 0.02 0.03 0.04 0.05 17