wprowadzenie do Matlaba

10

Click here to load reader

Transcript of wprowadzenie do Matlaba

Page 1: wprowadzenie do Matlaba

Politechnika Białostocka Wydział Elektryczny

Katedra Automatyki i Elektroniki

Wprowadzenie do programu MATLAB

Instrukcja pomocnicza do pracowni specjalistycznej

z przedmiotu „Podstawy Automatyki”

Białystok, wrzesień 2013

Page 2: wprowadzenie do Matlaba

1. Wprowadzenie MATLAB firmy MathWorks jest programem przeznaczonym do wykonywania

różnorodnych obliczeń numerycznych. Nazwa Matlab pochodzi od początkowych liter sformułowania MATrix LABoratory. Podstawową strukturę danych w programie stanowi prostokątna macierz (rzeczywista lub zespolona). W Matlabie skalary są traktowane jako macierze o wymiarach 1 na 1 (jeden wiersz, jedna kolumna), natomiast wektory jako macierze tylko z jednym wierszem lub kolumną.

Matlab zawiera standardowe biblioteki procedur realizujących między innymi przekształcenia macierzowe oraz całkowanie numeryczne. Biblioteki dodatkowe (ang. toolbox) poszerzają możliwości standardowych procedur Matlaba o obliczenia numeryczne wykorzystywane w różnorodnych zastosowania, takich jak: metody identyfikacji, przetwarzanie sygnałów, metody optymalizacji, projektowania układów sterowania, przetwarzanie obrazów i wiele innych.

Program Matlab zapewnia też zestaw zaawansowanych procedur graficznych (wykresy dwu- i trójwymiarowe różnych rodzajów) oraz polecenia umożliwiające tworzenie interakcyjnych programów realizujących obliczenia numeryczne (przyciski, menu).

Matlab jest środowiskiem otwartym i ciągle rozwijanym. Aktualnie dostępna jest wersja R2013b. W pracowni specjalistycznej z Podstaw Automatyki wykorzystywany jest Matlab R2007b. 2. Okna programu

W celu uruchomienia Matlaba należy podwójnie kliknąć na ikonę znajdującą się na pulpicie systemu Windows. Pulpit Matlaba (ang. desktop), czyli okno z nagłówkiem Matlab, pokazano na rys. 1. Pulpit zawiera menu, pasek narzędziowy oraz kilka mniejszych okien: Command Window, Command History, Current Directory, Workspace. Można zmieniać układ okien i ich rozmiar, ponadto oddzielać lub dołączać je do pulpitu Matlaba.

Zmiana aktualnego katalogu

Wpisywanie poleceń

Historia wykonanych poleceń

Rys. 1. Pulpit Matlaba

2

Page 3: wprowadzenie do Matlaba

• Command Window – (okno poleceń) wpisujemy tu z klawiatury jedno lub więcej poleceń oddzielonych przecinkami lub średnikiem. Po wciśnięciu klawisza Enter polecenia są wykonywane i wyświetlane są wyniki ich działania.

• Command History - zawiera listę wcześniej użytych poleceń. Poprzez dwukrotne kliknięcie na polecenie znajdujące się na liście możemy je uruchomić.

• Workspace, Current Directory – jeżeli wybrana jest zakładka Workspace, to okno przedstawia nazwy aktualnie dostępnych zmiennych. W przypadku zakładki Current Directory w oknie znajduje się lista plików i katalogów, pozwalająca na wybór i edycję wybranego pliku.

W prawym górnym rogu pulpitu Matlaba znajdują się trzy przyciski: przechodzenie do katalogu nadrzędnego, tworzenie nowego katalogu oraz szukanie plików. W lewym dolnym rogu pulpitu znajduje się przycisk Start umożliwiający szybki dostęp do np.: narzędzi, bibliotek, programów demonstracyjmych. 3. Obliczenia w Matlabie

Program Matlab może być używany jako naukowy kalkulatora wykonujący polecenia podane w linii poleceń. Można także tworzyć własne programy (ciągi poleceń) lub funkcje. Programy (skrypty) i funkcje pisane są w plikach tekstowych z rozszerzeniem *.m (tzw. m-plik). 3.1. Zmienne

W Matlabie zmienne zapisywane są w przestrzeni roboczej (ang. workspace) poprzez podanie nazwy zmiennej i przypisanie do niej wartości. Nazwy zmiennych muszą zaczynać się od litery i mogą zawierać dowolną ilość liter i cyfr (lub znaku podkreślenia _ ), lecz tylko pierwsze 19 znaków nazwy jest zapamiętywane. Aby dodać zmienną należy w Command Window za znakiem zachęty >> wpisać np. x=1 i zatwierdzić klawiszem Enter. >> x=1 x = 1 Jeśli zmienna x już istniała, to przyjmie nową wartość. Jeżeli po znaku zachęty zostanie podane polecenie bez definiowania nazwy zmiennej, wówczas wynik będzie przypisany do zmiennej o nazwie ans. >> 2 ans = 2 Jeżeli polecenie jest zakończone średnikiem, to wartości nie pojawiają się na ekranie. >> k=3; >>

Wpisanie polecenia who lub whos powoduje wyświetlenie w oknie Command Window wszystkich aktualnie dostępnych zmiennych. >> who Your variables are: ans k x Wszystkie zdefiniowane zmienne, widoczne także w oknie Workspace, mogą być usunięte po wywołaniu komendy clear, możemy też usunąć wybraną zmienną poleceniem clear nazwa_zmiennej. UWAGA: Matlab rozróżnia duże i małe litery.

3

Page 4: wprowadzenie do Matlaba

3.2. Macierze W Matlabie macierze mogą być definiowane na kilka różnych sposobów:

- wprowadzane przez jawną listę elementów, - generowane przez wbudowane instrukcje i funkcje, - tworzone przez m-pliki, - ładowane z zewnętrznych plików danych.

Najprostszą metodą wprowadzania macierzy jest użycie jawnej listy, oddzielając kolejne elementy każdego wiersza przecinkiem lub spacją, a wiersze średnikiem (;) lub przejściem do nowego wiersza (klawisz Enter). Elementy listy zawarte są w nawiasach kwadratowych [ ]. >> A=[1 2 3;4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 Wprowadzona macierz A jest automatycznie zapamiętana w przestrzeni roboczej Matlaba. Do istniejącej macierzy możemy dopisać kolejne wiersze lub kolumny, np. >> A = [A;[10 11 12]] A = 1 2 3 4 5 6 7 8 9 10 11 12 Możemy także odwołać się do dowolnego elementu macierzy poprzez podanie adresu elementu (wiersz, kolumna) lub wydzielić macierz o mniejszym wymiarze podając (zakres wierszy, zakres kolumn), np. >> a=A(2,3) a = 6 >> B=A(1:2,2:3) B = 2 3 5 6 Polecenie >> C=A(:,2) C = 2 5 8 11 wydziela z macierzy A wektor kolumnowy, podobnie można wydzielić wektor wierszowy. Macierze mogą też być tworzone z użyciem dwukropka. Należy podać: pierwszy element macierzy, krok zwiększania wartości kolejnych elementów oraz ostatni element i oddzielić je dwukropkami, np. >> B=1:3:15 B = 1 4 7 10 13 Jeżeli parametr kroku jest pominięty, wówczas domyślnie przyjmowany jest jako 1. >> C=1:10 C = 1 2 3 4 5 6 7 8 9 10

4

Page 5: wprowadzenie do Matlaba

Operacja transponowania (wiersze stają się kolumnami) jest wykonywana za pomocą apostrofu (’), np. >> D=A' D = 1 4 7 10 2 5 8 11 3 6 9 12 W Matlabie możemy generować macierze specjalne, np.: eye(x) macierz jednostkowa (jedynki na przekątnej), ones(x) macierz o elementach równych 1, zeros(x) macierz z elementami zerowymi, randn(x) macierz losowa o rozkładzie normalnym. Wymiary macierzy można sprawdzić korzystając z polecenia size, zaś większy wymiar macierzy poleceniem length. W tym celu używamy polecenia >> [m, n]=size(A) m = 4 n = 3 gdzie m jest liczbą wierszy a n jest liczbą kolumn macierzy A. W Matlabie dostępne są gotowe polecenia operacji na elementach macierzy, np.: sum(x) sumowanie elementów macierzy, diff(x) odejmowanie elementów macierzy, prod(x) wymnażanie elementów macierzy, det(x) wyznacznik macierzy, trace(x) suma elementów głównej przekatnej, eig(x) wektory i wartosci własne, inv(x) macierz odwrotna, norm(x) norma macierzy lub wektora, sort(x) sortuje wektor w porządku rosnącym, zwracając posortowany wektor lub dwa

wektory [y,k]=sort(x), z których y - wektor posortowany k - pozycje elementów wektora y tak jak występują w wektorze x. Sortuje także elementy każdej kolumny macierzy w porządku rosnącym dając na wyjściu macierz o tym samym układzie kolumn ale z elementami w kolumnach ułożonych rosnąco licząc od pierwszego elementu macierzy.

3.3. Operatory

W Matlabie występują operacje macierzowe (działania wykonywane na macierzach zgodnie z regułami algebry) i tablicowe (wykonywane na poszczególnych elementach macierzy). Na przykład, operator mnożenia macierzowego * realizuje mnożenie macierzy zgodnie z regułami algebry liniowej. Mnożenie A*B można wykonać jeśli liczba kolumn macierzy A jest równa liczbie wierszy macierzy B lub gdy jedna z macierzy (mnożna lub mnożnik) jest skalarem. Operator mnożenia tablicowego .* mnoży elementy tablic o tych samych indeksach. Mnożenie A.*B można wykonać jeśli wymiar macierzy A jest równy wymiarowi macierzy B lub gdy jedna z tych macierzy jest skalarem.

5

Page 6: wprowadzenie do Matlaba

Poniżej przedstawiono wybrane operatory używane w Matlabie (A i B oznaczają macierze). + dodawanie macierzy A+B (wymiary A i B muszą być takie same) - odejmowanie macierzy A-B (wymiary A i B muszą być takie same) * mnożenie macierzy A*B (liczba kolumn A musi być równa liczbie

wierszy B) / dzielenie macierzy X=A/B rozwiązuje liniowe działanie A*X=B .* mnożenie tablicowe A.*B (wymiary A i B muszą być takie same) ./ dzielenie tablicowe A./B (wymiary A i B muszą być takie same) ^ podnoszenie macierzy do potęgi A^S (S jest skalarem, A musi być macierzą

kwadratową) .^ podnoszenie elementów macierzy

do potęgi

3.4. Funkcje arytmetyczne i trygonometryczne

W Matlabie dostępne są podstawowe funkcje arytmetyczne i trygonometryczne. Poniżej podano wybrane funkcje. abs(x) wartość bezwzględna sqrt(x) pierwiastek kwadratowy exp(x) funkcja wykładnicza (ekspotencjalna) log(x) logarytm naturalny log10(x) logarytm dziesiętny (przy podstawie 10) log2(x) logarytm przy podstawie 2 sin(x), sinh(x) sinus, sinus hiperboliczny cos(x), cosh(x) cosinus cosinus hiperboliczny tan(x), tanh(x) tangens, tangens hiperboliczny asin(x), asinh(x) arcus sinus, arcus sinus hiperboliczny acos(x), acosh(x) arcus cosinus, arcus cosinus hiperboliczny atan(x), atanh(x) arcus tangens, arcus tangens hiperboliczny round(x) zaokrąglenie do najbliższej liczby całkowitej fix(x) odcięcie części ułamkowej (zaokrąglenie do liczby całkowitej) ceil(x) zaokrąglenie do najbliższej liczby całkowitej większej niż liczba

zaokrąglana floor(x) zaokrąglenie do najbliższej liczby całkowitej mniejszej niż liczba

zaokrąglana sign(x) funkcja sign (znak) rem(x) reszta z dzielenia dwóch liczb 3.5. Liczby zespolone

Operacje na liczbach, wektorach i macierzach zespolonych są wbudowane w Matlabie Części urojone liczb zespolonych można oznaczyć literą i lub j, jeśli te zmienne nie są już używane. Obie formy są równoprawne. Wprowadzenie zmiennych i wyrażeń wykonuje się następująco: >> z1=2+5j z1 = 2.0000 + 5.0000i >> z1/(3-4j) ans = -0.5600 + 0.9200i

6

Page 7: wprowadzenie do Matlaba

Dostępne w Matlabie funkcje do obliczeń w dziedzinie liczb zespolonych to: abs(x) moduł liczby zespolonej angle(x) argument liczby zespolonej real(x) część rzeczywista liczby zespolonej image(x) część urojona liczby zespolonej conj(x) liczba sprzężona 4. Wykresy dwuwymiarowe

Wykresy dwuwymiarowe z liniową skalą na obu osiach można wykonać za pomocą funkcji plot. Wywołanie funkcji plot powoduje otwarcie okna graficznego, w którym pojawia się wykres. Funkcja plot może być wywołana z różną liczbą argumentów wejściowych. plot(y) rysuje wykres elementów wektora y, przyjmując za x kolejne numery

indeksów elementów wektora zaczynając od 1. plot(x,y) rysuje wykres y = f(x). plot(x,y,’kolor_rodzaj_linii’) rysuje wykres y = f(x) z określeniem sposobu

rysowania linii. plot(x1,y1,x2,y2,...) rysuje w jednym oknie wiele wykresów. plot(x1,y1,’kolor_rodzaj_linii1’,x2,y2,’kolor_rodzaj_linii2’, ...) rysuje w jednym oknie wiele wykresów z określeniem sposobu rysowania linii każdego z nich. W celu narysowania prostego wykresu należy w przestrzeni roboczej zdefiniować wektor y, a następnie wywołać funkcję plot(y). >> y=[-2 3 -1 4 5 0 -3 2]; >> plot(y) Otrzymany wykres pokazano na rys. 2.

Rys 2. Okno z wykresem, plot(y) – na osi x numery indeksów wektora y Kolejny przykład pokazuje wywołanie funkcji plot z dwoma argumentami wejściowymi i definiowaniem koloru linii. >> alpha=0:pi/10:2*pi; >> s=sin(alpha); >> plot(alpha,s,'r')

7

Page 8: wprowadzenie do Matlaba

Rys. 3. Okno z wykresem funkcji sinus w zakresie <0,2π > Wykres można uzupełnić nadając tytuł poleceniem title('wykres funkcji sinus'), a także dodać opisy osi poziomej i pionowej poleceniami xlabel('kąt [rad]') i ylabel('wartości funkcji ') oraz siatkę poleceniem grid. >> plot(alpha,s,'r') >> title('wykres funkcji sinus') >> xlabel('kąt [rad]') >> ylabel('wartości funkcji') >> grid

Rys. 4. Okno z wykresem funkcji sinus wraz z opisami osi i siatką

8

Page 9: wprowadzenie do Matlaba

Poniżej podano polecenia Matlaba wykorzystywane przy tworzeniu grafiki dwuwymiarowej. figure tworzy nowe okno graficzne figure(n) tworzy nowe okno graficzne o numerze n hold on powoduje dodanie nowego wykresu do aktywnego okna close zamyka aktywne okno graficzne close all zamyka wszystkie okna graficzne clf czyści zawartość aktywnego okna graficznego subplot(m,n,p) dzieli okno graficzne na mniejsze prostokątne okienka umieszczając

je w m wierszach i n kolumnach, p – numer aktywnego okienka, w każdym okienku można narysować wykres

5. Skrypty

Skrypty (m-pliki) zawierają ciągi poleceń, które zapisywane są w plikach tekstowych z rozszerzeniem *.m. Tworzymy je w celu uproszczenia powtarzających się operacji, łatwiejszego wprowadzania danych, zapisu wyników obliczeń, itp. Skrypty działają na zmiennych dostępnych w przestrzeni roboczej i wywoływane są poprzez wpisanie w linii poleceń nazwy pliku (bez rozszerzenia m) lub za pomocą paska narzędzi edytora Matlaba.

Rys. 5. Okno edytora Matlaba Komentarze w Matlabie podawane są po znaku %. Pierwsze trzy linie komentarza są wyświetlane w oknie Command Window po wywołaniu polecenia help nazwa_pliku. >> help wykres_sin Skrypt rysuje wykres funkcji sinus w przedziale <0, 2pi> 6. Korzystanie z pomocy

Matlab posiada bardzo rozbudowany system pomocy. Aby przeczytać skrócony opis działania danej komendy w linii poleceń należy podać: help nazwa_polecenia, np. >> help sin SIN Sine of argument in radians. SIN(X) is the sine of the elements of X. Dodatkowo menu Help umożliwia dostęp do pełnej dokumentacji Matlaba.

9

Page 10: wprowadzenie do Matlaba

7. Zadania do wykonania 1.Oblicz podane wyrażenia dla zadanych wartości x i y w przestrzeni roboczej Matlaba.

1.) p = −2125

36Π *

2.) sy

x x= − −ln .2 45

22

3.) yxr 234 3 −Π=

2.Wprowadź dwie dowolne macierze (A,B) o wymiarach zadanych przez prowadzącego. Następnie wyznacz: - macierz transponowaną i odwrotną do macierzy A, - wyznacznik macierzy A, - elementy macierzy poddane operacji mnożenia przez 2, - nadaj wskazanemu elementowi macierzy A wartość zdefiniowanej wcześniej zmiennej k, - utwórz wektor kolumnowy przez wyznaczenie wyszczególnionej kolumny macierzy A, - dokonaj sortowania wyrazów otrzymanego wektora, - wykreśl krzywą której rzędne stanowią wyrazy wskazanej kolumny a odcięte powstają na skutek podniesienia do kwadratu każdego z tych wyrazów, - oblicz iloczyn macierzy A i B. 3. Wprowadź dwie liczby zespolone z1 i z2, następnie - podaj wyniki operacji mnożenia, dzielenia, dodawania i odejmowania obu liczb, - wyznacz moduł, argument oraz liczbę sprzężoną do z1. 4. Przedstaw w formie graficznej (za pomocą funkcji plot) kilka okresów podstawowych

funkcji trygonometrycznych. 5. Wykonaj polecenie z punktu 1 za pomocą skryptu. Wykorzystaj polecenie input. Literatura 1. B. Mrozek, Z. Mrozek: MATLAB i Simulink: poradnik użytkownika. Wydawnictwo

Helion, Gliwice, 2004. 2. A. Zalewski, R. Cegieła: Matlab - obliczenia numeryczne i ich zastosowania.

Wydawnictwo Nakom, Poznań, 2000. 3. J. Brzózka, L. Dorobczyński: Programowanie w Matlab. Wydawnictwo

Mikom,Warszawa, 1998. 4. M. Czajka, Matlab, ćwiczenia. Wydawnictwo Helion, Gliwice, 2005.

10