Zakaz rozpowszechniania w sieci, tylko na użytek studentów informatyki UwB. WYKŁAD 1- Matlab 1. Wprowadzenie do Matlaba. Języki programowania takie jak np. C++ umożliwiają tworzenie programu realizującego dowolne zadanie obliczeniowe, jest to często czasochłonne i skomplikowane. W przypadku zadań typowo obliczeniowych lub inżynierskich alternatywę stanowi skorzystanie z pakietu obliczeniowego np. MATLAB-a (ang. MATrix LABoratory) firmy MathWorks. Matlab umożliwia dużo szybsze wykonanie zadania obliczeniowego niż zrealizowanie takiego samego algorytmu np. w C++. MATLAB to programem przeznaczony m.in. do wykonywania obliczeń numerycznych. 1
2. Skład pakietu: - interpreter języka programowania z bibliotekami podstawowych działań i obliczeń na macierzach tj. np. translacja macierzy, sprzężenie macierzy, wartości własne itd. - realizujące różne obliczenia standardowe biblioteki procedur napisane w języku programu MATLAB. Należą do nich m.in. procedury realizujące przekształcenia macierzy, obliczanie wartości funkcji elementarnych i specjalnych, całkowanie numeryczne, rozwiązywanie układów równań różniczkowych zwyczajnych, podstawowe obliczenia statystyczne, - nakładki (dodatkowe programy napisane w języku pakietu MATLAB), które ułatwiają realizację obliczeń określonego rodzaju np. Simulink - nakładka umożliwiająca interakcyjne definiowanie struktury układów dynamicznych oraz wygodną jego symulację. Simulink jest systemem graficznym, układy projektuje się w nim poprzez schematy blokowe. - biblioteki dodatkowe (ang. toolbox), które nabywa się oddzielnie w zależności od potrzeb użytkownika. Zawierają one procedury numeryczne przystosowane do różnych zastosowań. Np.: 2
a) Mapping Toolbox http://www.mathworks.com 3
b) Signal Processing Toolbox Cyfrowe przetwarzanie sygnałów, 4
c) Optymization Toolbox Metody optymalizacji, 5
d) Bioinformatics Toolbox http://www.mathworks.com 6
e) Image Processing Toolbox http://wiki.biac.duke.edu 7
f) Neural Network Toolbox - Sztuczne sieci neuronowe np. wykorzystanie sztucznych sieci neuronowych jako narzędzia wspomagającego zarządzanie zapasami i planowanie popytu dla przedsiębiorstwa dystrybucyjnego, zastosowanie sztucznych sieci neuronowych do redukcji stopnia iskrzenia w elektrycznych maszynach komutatorowych prądu stałego (www.lukas-home-page.ovh.org) http://articles.mql4.com 8
e) Financial Toolbox np. Analiza ryzyka i wyników inwestycyjnych 9
3. Zalety: - możliwość modyfikacji istniejących i dodawania własnych m-plików, dołączaniu do m-plików programów zewnętrznych napisanych w języku C (C++), wywoływaniu i wykonywaniu w środowisku C (C++) programów napisanych w MATLAB-ie; konwersja m-funkcji MATLAB-a na kod C (C++), eksport / import plików z / do MATLAB-a (np. z MATLAB-a do Excela i odwrotnie); - możliwość jednoczesnego korzystania z m-funkcji, pochodzących z różnych bibliotek dodatkowych; kompilacja m-plików do postaci wykonywalnej poza środowiskiem MATLAB; - dostępność na różnych platformach sprzętowych czy systemowych Windows, Unix (Język Matlaba nie zależy od platformy sprzętowej czy systemowej na której program działa. Integracja Photoshopa z MATLAB 10
4. Kreatywni Studenci kontra Matlab: (http://lroj.wordpress.com) Projekt i wykonanie autonomicznego robota kroczącego ANIA sterowanego z wykorzystaniem rozproszonego systemu sensoryki (Model układu sonaru opracowano w programie Matlab Simulink) 11
5. Wykorzystanie Matlab w przemyśle: Przemysł lotniczy i obronny Przemysł motoryzacyjny Biotechnologia i przemysł farmaceutyczny Telekomunikacja Elektronika_i_pólprzewodniki Przemysł energetyczny Usługi finansowe 12 Automatyzacja i przemysł maszynowy
6. Interfejs. Główne okno Matlaba - Command Window (Okno poleceń) służy do bezpośredniego wpisywaniu poleceń, w tym samym oknie pojawiają się również odpowiedzi programu. Pozostałe panele: - Command History (Historia poleceń), które zawiera wszystkie polecenia wydane podczas pracy z Matlabem. - Workspace (Przestrzeń robocza), jest to lista aktualnie dostępnych zmiennych wraz z informacją o ich rozmiarze i typie. - Current Directory (Katalog bieżący), zawierające aktualny główny katalog roboczy. Launch Pad (Wprowadzone bloki), zawiera strukturę zainstalowanych części Matlaba i toolboxów. 13
W górnej części okna Matlaba znajduje się menu poziome oraz pasek narzędziowy. Pierwszą opcją jest instrukcja File. Mamy tam: New Nowe puste okno, mamy do wyboru: m-file (m-plik), figure (rysunek), model (okno simulinka), GUI (okno tworzenia interfejsu graficznego). Open... Otwiera pliki Matlaba. Close Command Window Zamyka okno główne. Import Data... Wprowadza do przestrzeni roboczej zmienne wcześniej zapisane. Save Workspace As... Zapisuje zmienne z przestrzeni roboczej. Set Path... Ustawianie ścieżek dostępu do katalogów roboczych. Preferences... Ustawienia główne programu. Z menu Edit wszystko powinno być jasne. View wprowadza zmiany w wyglądzie samego interfejsu, ustawienie okien itp. W opcji Window mamy tylko close all. Ostatnia opcja Help. Generalnie otwierane jest oddzielne okno pomocy Matlaba. Dodatkowo mamy tutaj Demos, które uruchamia okno z programami demonstracyjnymi. Są one napisane w Matlabie i obrazują działanie samego Matlaba, toolboksów, simulinka itp. 14
7. Skróty klawiszy. Matlab stanowi w istocie interpreter języka zaprojektowanego z myślą o obliczeniach numerycznych. Praca z Matlabem polega na wydawaniu poleceń, które po zatwierdzeniu są wykonywane przez program. W ten sposób z wiersza poleceń możemy zdefiniować zmienną, wywołać funkcję lub podprogram napisany w specjalnym pliku tekstowym (skrypt). Edycję możemy wspomagać pewnymi poleceniami edytora, jak: Kombinacja klawiszy, Ctrl-P, Ctrl-N, Ctrl-B, Ctrl-F Ctrl-, Ctrl-L Ctrl-, Ctrl-R Ctrl-A Ctrl-D Ctrl-K Operacja przywołanie polecenia poprzedniego następnego przesunięcie kursora znak w lewo znak w prawo słowo w lewo słowo w prawo na początek wiersza inne usunięcie znaku z pozycji kursora usunięcie znaków do końca wiersza 15
8. Pomoc systemowa. Najprostszą metodą uzyskania informacji o funkcjach Matlaba podczas pracy z pakietem jest użycie polecenia help: >> help nazwa_funkcji 16 Help w menu Matlaba:
9. Polecenia pomocnicze. Po uruchomieniu Matlaba wyświetla się okno poleceń ze znakiem gotowości: >>, po którym pisze się jedno lub kilka poleceń oddzielonych średnikami, lub też nazwę funkcji czy m-pliku. Wszystkie polecenia należy pisać małymi literami, gdyż Matlab rozróżnia duże i małe litery. Wybrane polecenia pomocnicze: - ver('control') Control System Toolbox Version 5.0 (R12) 01-Sep-2000 - type nazwa_pliku_tekstowego wyświetla zawartość pliku tekstowego o podanej nazwie. Wyświetla także m-pliki, gdyż też są to pliki tekstowe. - lookfor szukana_nazwa przeszukuje wszystkie teksty pomocy w celu znalezienia szukanej nazwy, lub jej fragmentów. - which nazwa_m-piku wyświetla ścieżkę dostępu do m-pliku lub m-funkcji. Nazwy podaje się bez rozszerzenia, - np.: >> which normal C:\Tools\matlabR12\work\normal - clc czyści okno poleceń Matlaba i lokalizuje kursor w lewym górnym rogu. - dir (lub ls) wyświetla nazwy plików w bieżącym katalogu. - dir nazwa_katalogu wyświetla nazwy plików w katalogu o podanej nazwie, np.: >> dir toolbox. fuzzy matlab rptgenext simulink.. ident nnet rtw stateflow control local optim signal symbolic 17
Slajd 15: Zmienne. nazwa zmiennej Matlaba musi się rozpoczynać literą i może składać się z dowolnej ilości liter, cyfr i znaków podkreślenia. nie musimy deklarować zmiennych ani podawać ich rozmiaru. jeśli pojawia się nowa zmienna, Matlab automatycznie tworzy ją i przydziela jej odpowiednią ilość pamięci. jeśli zmienna o takiej nazwie już była, jej poprzednia wartość zostanie zastąpiona nową. 18 >> x=2 otrzymamy odpowiedź: x = 2 Obliczmy teraz pierwiastek kwadratowy z x: >> sqrt (x) ans = 1.4142
Nie podaliśmy nazwy zmiennej wynikowej, stąd wynik został zapisany w specjalnej zmiennej ans. Dodajmy jeszcze kilka zmiennych: >> kk=[67 98]; ff=[77 29]; >> ns=[ nie spać ] 19
Polecenia pomocnicze: - who podaje nazwy zmiennych znajdujących się w przestrzeni roboczej. - whos podaje dokładniejszą informację o zmiennych. Zmienne z przestrzeni roboczej Matlaba można usunąć za pomocą polecenia clear. - clear nazwa_zmiennej usuwa zmienną z przestrzeni roboczej. - clear usuwa wszystkie zmienne. 20
10. Zmienne i wartości specjalne. O jednej zmiennej specjalnej wspomniałem już wcześniej. Była to zmienna ans. Matlab wykorzystuje tą zmienną gdy przy wykonywaniu jakiegoś polecenia nie podamy pod jaką zmienną ma być zapisany wynik. Matlab zawiera też inną standardową zmienną eps, jest to odległość pomiędzy liczbą 1, a najbliższą większą od niej liczbą zmiennoprzecinkową. Jej wartość początkowa to 2.2204e-016 = 2-52. Służy ona m.in. do wyznaczania rzędu macierzy. Mamy też predefiniowane stałe w Matlabie takie jak np. pi. Niekiedy funkcje zwracają specjalne wartości, i tak: - +/- inf nieskończoność. Jest rezultatem operacji, która przekracza zakres arytmetyki komputera np.: 1/0 lub sinh(10000) - NaN nieliczba. Jest wynikiem matematycznie niezdefiniowanej operacji, np.: 0/0. 21
11. Zasady pisania programów. Matlab umożliwia pracę w dwu trybach: - interaktywnym polega na wpisaniu jednego lub kilku poleceń w linii zgłoszenia, np.: >> clc; date - wsadowym z wykorzystaniem m-plików czy inaczej skryptów. Jest to niesformatowany plik tekstowy, zawierający instrukcje przeznaczone do wykonania. Wykonanie tego skryptu polega na wpisaniu jego nazwy w linii poleceń Matlaba i jego uruchomieniu. Nazwę wpisujemy bez rozszerzenia (*.m). Wyróżniamy m-pliki funkcyjne oraz właśnie skryptowe. m-pliki funkcyjne operują na zmiennych lokalnych, natomiast skryptowe na zmiennych globalnych. Przykład m-pliku: %Przyklad 1 % znak ten oznacza komentarz clc; % czyszczenie ekranu x=[-1 1]; %wektor x y=3*x; %wartość funkcji %wykonanie wykresu plot(x,y); grid on %włączenie siatki 22
12. Macierze. Odmiany macierzy dwuwymiarowej. - skalar macierz o rozmiarze 1x1 - wektor wierszowy macierz o jednym wierszu - wektor kolumnowy macierz o jednej kolumnie Definiowanie macierzy wymaga uwzględnienia następujących reguł: - elementy w wierszu macierzy muszą być oddzielone spacją lub przecinkiem - średnik lub znak nowego wiersza (enter) kończy wiersz macierzy i powoduje przejście do następnego - cała lista elementów macierzy musi być ujęta w nawiasy kwadratowe A = [ 1 5 3 4; 0 2 8 7]; Średnik na końcu polecenia powoduje, że nie pojawi się nam wynik operacji. Otrzymamy macierz o dwóch wierszach i czterech kolumnach. Wariant 1 >> A A = 1 5 3 4 0 2 8 7 (można również) Wariant 2 >> B = [ 1 2 3 4... 5 6 7 8] 13. Szybkie generowanie elementów z równym krokiem. - wykorzystujemy wyrażenie ogólne o postaci min : max. >> x=1:6 x = 1 2 3 4 5 6 - wykorzystujemy wyrażenie min : krok : max >> y=3:2.3:9 y = 3.0000 5.3000 7.6000 - różne kroki w różnych wierszach: 23
z=[1:10; 1:2:20] z = 1 2 3 4 5 6 7 8 9 10 1 3 5 7 9 11 13 15 17 19 14. Budowanie macierzy z podmacierzy. Macierz można budować z innych macierzy. Należy najpierw zdefiniować podmacierze: >>A=[3-1; 4 9]; >> B=[3 5 7]; >> C=[6;0]; Otrzymamy: >> A A = 3-1 4 9 >> B B = 3 5 7 Utwórzmy teraz macierz wynikową: >> C C = 6 0 >> D=[B;C A] D = 3 5 7 6 3-1 0 4 9 Uwaga pamiętaj że macierz wynikowa musi posiadać jednakową liczbę elementów w każdym wierszu i kolumnie. 24
15. Funkcje generujące macierze. Konstruowanie macierzy można wspomagać standardowymi funkcjami: Funkcja eye(n) eye(n, m) eye([n m]) ones(n) ones(n, m) ones([n, m]) zeros(n) zeros(n m) zeros([n, m]) rand(n) rand(n m) rand([n m]) randn(n) randn(n m) randn([n m]) inv(a) Opis tworzy macierz jednostkową o rozmiarze n x n, lub macierz n x m z jedynkami na głównej przekątnej tworzy macierz o wszystkich elementach równych 1 tworzy macierz o wszystkich elementach równych 0 tworzy macierz o rozmiarze n x n lub n x m wypełnioną liczbami pseudolosowymi z przedziału <0,1> o rozkładzie jednostajnym tworzy macierz o rozmiarze nxn lub n x m wypełnioną liczbami pseudolosowymi o rozkładzie normalnym ze średnią 0 i wariancją równą 1 macierz odwrotna do A, inv(a)=a^(-1) Jeżeli chcemy utworzyć macierz np.: jednostkową o wymiarze takim jak inna macierz X, należy użyć wyrażenia: eye(size(x)) ones(size(x)) zeros(size(x)). 16. Dostęp do elementów macierzy. element macierzy znajdujący się w wierszu o indeksie i oraz w kolumnie o indeksie j jest określony jako A(i,j). do elementów macierzy można się też odwoływać przy użyciu tylko jednego indeksu, np. A(k) (w przypadku wektora odwołanie takie odnosi się do kolejnego elementu wektora, natomiast w przypadku macierzy odwołanie takie zostanie potraktowane jako odwołanie do wektora kolumnowego utworzonego z kolejnych kolumn macierzy). Przykład C= 2 5 6 4 9 5 0 3 1 6 1 2 5 9 1 25
Pytanie: Co wyświetli się na ekranie gdy wpiszemy C(3,2)? Pytanie: Co wyświetli się na ekranie gdy wpiszemy C(2)? 17. Odwołanie do fragmentów macierzy. Odwołanie do wybranych fragmentów wektorów i macierzy możemy zrealizować za pomocą dwukropka: Odwołanie x(j:k) A(i,:) A(i,j:l) A(i:k,j:l) A(x,j:l) A(:,:) A(:) Opis elementy wektora wierszowego x o numerach od j do k wszystkie elementy w wierszu i macierzy A wszystkie elementy w wierszu i macierzy A o numerach od j do l wszystkie elementy w kolumnach od j do l wierszy od i do k wszystkie elementy w kolumnach od j do l w wierszach macierzy A o numerach określonych przez elementy wektora x cała dwuwymiarowa macierz A cała macierz A w postaci wektora kolumnowego 18. Usuwanie fragmentów macierzy. Wybrany element macierzy usuwa się przypisując mu wartość w postaci macierzy pustej. Macierz taka nie ma zawartości i składa się z dwóch nawiasów kwadratowych ([]). Weźmy macierz K=[1 2 3; 4 5 6; 7 8 9] K = 1 2 3 4 5 6 7 8 9 Aby usunąć np. drugi wiersz należy użyć polecenia: K(2,:)=[] otrzymamy: K = 1 2 3 7 8 9 26