Wprowadzenie do środowiska www.mathworks.com Piotr Wróbel piotr.wrobel@igf.fuw.edu.pl Pok. B 4.22 Metody numeryczne w optyce 2017
Czym jest Matlab Matlab (matrix laboratory) środowisko obliczeniowe oraz język programowania www.mathworks.com Pozwala na obliczenia macierzowe, wizualizację funkcji i danych, implementację algorytmów, tworzenie interfacu użytkownika kompatybilnego z innymi językami programowania (c, c++, Java, Fortran) Toolboxy zbiór dodatkowych bibliotek (funkcji, skryptów) do rozwiązywania specjalistycznych problemów z określonych dziedzin (automatyka, elektronika, telekomunikacja, matematyka etc.).
Dlaczego Matlab? Zalety Łatwy w użyciu Przyjazny dla użytkownika Niezależny od platformy/systemu Predefiniowane funkcje GUI Wady programy wolniejsze od tych napisanych w innych językach programowania (c, c++, Java, Fortran)
Interface graficzny Matlab wykorzystuje standardowe menu W celu zamknięcia Matlaba użyj ikony zamknięcia lub w menu wybierz File Exit Matlab 4
Interface graficzny Bieżący folder Historia poleceń Okno poleceń w wierszu wpisujemy polecenia i wyrażenia np. >> A=2 Okna Matlaba okna można dostosowywać w dowolny sposób 5
Interface graficzny cd Przestrzeń robocza 6
Polecenia/zmienne Nazwy zmiennych muszą zaczynać się od liter np. a=1 mogą zawierać liczby lub _ np. a1234_bc=15 Matlab rozróżnia małe i wielkie litery Przypisanie zmiennych zmienna = liczba; A=10; zmienna = wyrażenie; C=A+B; zmienna = ABCDefg ; średnik (;) postawiony na końcu polecenia brak wyświetlenia wyniku 7
Zmienne specjalne Zmienne ans domyślna zmienna dla wyniku pi - =3,1415926 eps: = 2.2204e-016, najmniejsza wielkość o którą dwie liczby mogą się różnić Inf or inf :, nieskończoność NaN or nan: not-a-number Funkcje elementarne: sin(),tg(), e () >> help elfun specjalne >> help specfun 8
Porady Wynik jednego problemu może mieć wpływ na wynik kolejnego problemu (identyczne zmienne ) Czyszczenie przestrzeni roboczej przed rozpoczęciem kolejnych obliczeń usuwanie zmiennych oraz funkcji Przydatne komendy clear usuwa wszystkie zmienne clear t usuwa zmienną t clear all - usuwa wszystkie zmienne, funkcje oraz odnośniki clc czyszczenie okna poleceń clf czyszczenie okna plotowania ctrl-c przerwanie obliczania - przejście do kolejnej linii np. A=[1,2,3,4 5 6 7 8] 9
Masz problem. Korzystanie z pomocy: Użyj komendy help żeby uzyskać informację na dany temat: >> help pi Szczegółowe wyjaśnienia znajdziesz w: >> doc plot Użyj komendy lookfor w celu znaleźenia funkcji po słowach kluczowych: >> lookfor regression 10
Wektory Tworzenie wektorów: >> x = [ 0 0.25*pi 0.5*pi 0.75*pi pi ] - wektor wierszowy x = 0 0.7854 1.5708 2.3562 3.1416 >> y = [ 0; 0.25*pi; 0.5*pi; 0.75*pi; pi ] - wektor kolumnowy y = 0 0.7854 1.5708 2.3562 3.1416 11
Wektory Adresowanie wektora każdy element wektora jest adresowany za pomocą liczby całkowitej np.: >> A=[1 5 8]; >> A(2) >> 5 Dwukropek (:) może być użyty do zaadresowania grupy elementów wektora (start : przyrost : koniec) >> x(1:3) ans = 0 0.7854 1.5708 Adresowanie w Matlabie zaczyna się od 1 12
Przydatne komendy Przydatne komendy x = start:koniec tworzy wektor x z pierwszym elementem start i ostatnim koniec oraz krokiem co jeden x = start:krok:koniec - wektor x z przyrostem przyrost linspace(start,koniec,n) tworzy wektor poziomy o liczbie elementów n równo rozłożonych w zakresie od start do koniec length(x) zwraca długosć wektora x y=x transpozycja wektora x dot(x,y) zwraca iloczyn skalarny wektorów x i y 13
Macierze Tworzenie macierzy: Spacje lub przecinki służą do oddzielenia elementów w wierszu Średniki oddzielają kolumny x = [1 2 3; 5 1 4; 3 2-1] x = 1 2 3 5 1 4 3 2-1 14
Macierze Adresowanie macierzy: macierz(wiersz, kolumna) Dwukropek (:) użyty w miejscu wiersza lub kolumny odnosi się do całego wiersza lub kolumny Przykład: >> f(2,3) ans = 6 >> h(:,1) macierze f = 1 2 3 4 5 6 h = 2 4 6 1 3 5 ans = 2 1 15
Przydatne komendy Przydatne komendy zeros(m,n) - macierz zer 0 rozmiarach MxN ones(m,n) - macierz 1 o rozmiarach MxN rand(m,n) macierz losowych liczby o jednorodnym rozkładzie rozmiarach MxN randn(m,n) - macierz losowych liczby o rozkładzie normalny o rozmiarach MxN eye(m,n) macierz jednostkowa diag(a) macierz diagonalna det(a) wyznacznik A inv(a), - macierz odwrotna rank (A) - rząd macierzy lista poleceń >>help elmat >>doc elmat 16
Działania arytmetyczne Operatory arytmetyczne + dodawanie - odejmowanie * mnożenie / dzielenie ^ potęgowanie zespolona transpozycja Operatory arytmetyczne tablicowe (element-po-elemencie).* mnożenie tablicowe./ dzielenie tablicowe.^ potęgowanie tablicowe. zespolona transpozycja 17
Zapisywanie pracy Zapisywanie i wczytywanie zmiennych z pliku funkcje save, load >> help save, >> help load. Przydatne polecenia save NazwaPliku x % zapisuje zmienną x w pliku NazwaPliku.mat >> save(' NazwaPliku.mat ', zmienna A', zmienna B ) save NazwaPliku x -ascii % zapisuje zmienną x w pliku tekstowym NazwaPliku.mat >> save(' NazwaPliku.mat ', zmienna A', zmienna B,'-ASCII') save NazwaPliku % zapisuje wszystkie zmienne w pliku NazwaPliku.mat load NazwaPliku % wczytuje wszystkie zmienne z pliku NazwaPliku.mat 18
Zadania Materiały https://www.igf.fuw.edu.pl/pl/courses/lectures/metody-numerycz-72041g/ 19
Wizualizacja danych Wykres funkcji y=sin(x) Utwórz wektor x o 100 elementach z zakresu od 0 4π, np.: funkcją linspace >>x=linspace(0,4*pi,100); oblicz sin(.) wektora x >>y=sin(x); Wykreśl wektor y >>plot(y) 20
Wizualizacja danych plot(x,y,'r-*','linewidth', 3) hold on plot(x,y1,'go','linewidth', 3) hold on plot(x,y2,'b-s','linewidth', 3) hold off x=linspace(0,4*pi,100); y=sin(x); y1=sin(2.*x); y2=sin(3.*x); grid on ylabel('y','fontsize',[30]) xlabel('x','fontsize',[30]) set(gca,'fontsize',[30]) ylim([-1.5 1.5]) legend('y','y1','y2') 21