Informatyka. Wykład 2. Witold Dyrka 5/3/2012

Podobne dokumenty
PODSTAWY TWORZENIA WYKRESÓW ORAZ HANDLE GRAPHICS

Matlab II skrypty, funkcje, wizualizacja danych. Piotr Wróbel Pok. B 4.22

Laboratorium Algorytmy Obliczeniowe. Lab. 9 Prezentacja wyników w Matlabie

Laboratorium 3 Grafika 2D i 3D w Matlabie. Wprowadzenie do programowania

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

Tytuł: GRAPHER Podręcznik użytkownika ISBN: Autor: Zbigniew Galon Rok wydania: 2014 Stron: 500 Wydawca: Gambit COiS Sp. z o.o.

Elementy okna MatLab-a

PODSTAWY INFORMATYKI 1 MATLAB CZ. 3

Matlab Składnia + podstawy programowania

Grafika dwu- i trójwymiarowa MATLABie

Gambit Centrum Oprogramowania i Szkoleń Sp. z o.o.

Wizualizacja funkcji w programie MATLAB

Metody numeryczne. Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski

Podstawowe operacje graficzne.

Wprowadzenie do Scilab: funkcje i wykresy

Graficzna prezentacja wyników

zajęcia 2 Definiowanie wektorów:

Grafika w Matlabie. Wykresy 2D

Matlab MATrix LABoratory Mathworks Inc.

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Pisząc okienkowy program w Matlabie wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane.

Podstawy MATLABA, cd.

Tytu : GRAPHER Podr cznik u ytkownika ISBN: Autor: Zbigniew Galon Rok wydania: 2009 Stron: 408 Wydawca: Gambit COiS Sp. z o.o.

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Programowanie: grafika w SciLab Slajd 1. Programowanie: grafika w SciLab

Matlab Składnia + podstawy programowania

1 Wizualizacja danych - wykresy 2D

Graficzna prezentacja wyników w MATLABIE

Programowanie w języku Python. Grażyna Koba

Wprowadzenie do pakietów MATLAB/GNU Octave

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Wstęp do Programowania Lista 1

Wykresy i obiekty graficzne w Matlabie

Metody i analiza danych

TWORZENIE WYKRESÓW (1)

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

Praktyczny Excel. Wykresy i grafika. w Excelu krok po kroku

Scilab - podstawy. Wersje instalacyjne programu Scilab mogą zostać pobrane ze strony

Metody Numeryczne. Laboratorium 1. Wstęp do programu Matlab

Laboratorium Komputerowego Wspomagania Analizy i Projektowania

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS

Wprowadzenie do środowiska MATLAB z zastosowaniami w modelowaniu i analizie danych

Modelowanie Systemów Dynamicznych Studia zaoczne, Automatyka i Robotyka, rok II. Podstawy MATLABA, cz2.

1. Przypisy, indeks i spisy.

MATLAB wprowadzenie śycie jest zbyt krótkie, aby tracić czas na pisanie pętli!

Krótka instrukcja opracowania danych w programie SciDAVis v. 1-D013-win

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

Informatyka. Wykład 0. Witold Dyrka 13/2/2012

ARKUSZ KALKULACYJNY MICROSOFT EXCEL cz.2 Formuły i funkcje macierzowe, obliczenia na liczbach zespolonych, wykonywanie i formatowanie wykresów.

Przykładowe pytania na kolokwium z Informatyki dla Inżynierii Biomedycznej

Informatyka. Wykład /2018z

Metody numeryczne. Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski

W pustym arkuszu utwórz automatycznie tabliczkę mnożenia w zakresie od 1*1 do 25*25.

Praktyczny Excel. Wykresy i grafika. w Excelu krok po kroku

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS

Elementy Projektowania Inżynierskiego MATLAB Wprowadzenie.

Pętle iteracyjne i decyzyjne

Ćwiczenie 0 : Wprowadzenie do cyfrowego przetwarzania sygnałów. wyświetla listę tematów pomocy. wyświetla okno pomocy (Help / Product Help)

Matplotlib. Krzysztof Katarzyński. Centrum Astronomii UMK

Laboratorium Cel ćwiczenia Ćwiczenie ma na celu praktyczne przedstawienie grafiki 3D.

Ćwiczenia 11 (12) (4 godziny). Wizualizacja i manipulacja w Matlabie

Wykresy. Wykresy i grafika w Matlabie 11/4/2013. sin(θ ) Wykresy 2D Wykresy 3D Animacje i filmy Tworzenie interfejsu uŝytkownika GUI

Metodyka programowania. Komponent Chart

1 Podstawy c++ w pigułce.

Ściągawka z Matlaba / Octave

3.7. Wykresy czyli popatrzmy na statystyki

Wykresy. Informatyka Arkusz kalkulacyjny Excel dla WINDOWS. Excel. cz.4. Wykresy. Wykresy. Wykresy. Wykresy

W tym celu korzystam z programu do grafiki wektorowej Inkscape 0.46.

Podstawy Programowania C++

MATLAB tworzenie własnych funkcji

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Rok akademicki: 2014/2015 Kod: CCB s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Przetwarzanie sygnałów

TABELE I WYKRESY W EXCELU I ACCESSIE

Wykresy i interfejsy użytkownika

Instrukcja właściwego wykonania wykresów na zajęcia dydaktyczne.

PODSTAWY INŻYNIERII SYSTEMÓW TECHNICZNYCH

Projektowanie graficzne. Wykład 2. Open Office Draw

Wprowadzenie do środowiska

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

1 Programowanie w matlabie - skrypty i funkcje

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

Pakiety matematyczne. Matematyka Stosowana. dr inż. Krzysztof Burnecki

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Qtiplot. dr Magdalena Posiadała-Zezula

1) Podstawowe obliczenia. PODSTAWY AUTOMATYKI I ROBOTYKI Laboratorium. Wykonał: Łukasz Konopacki Sala 125. Grupa: poniedziałek/p,

Języki Modelowania i Symulacji 2018 Wprowadzenie: MATLAB Wykład 2

Ć w i c z e n i e 3 : W i z u a l i z a c j a d a n y c h - w y k r e s y S t r o n a 1

Modelowanie rynków finansowych z wykorzystaniem pakietu R

ARKUSZ KALKULACYJNY MICROSOFT EXCEL

ŚRODOWISKO MATLAB cz.4 Tworzenie wykresów funkcji

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Przykładowo, jeśli współrzędna x zmienia się od 0 do 8 co 1, a współrzędna y od 12 co 2 do 25, to punkty powinny wyglądać następująco:

Wartości x-ów : Wartości x ów można w Scilabie zdefiniować na kilka sposobów, wpisując odpowiednie polecenie na konsoli.

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Funkcje wielu zmiennych

Transkrypt:

Informatyka Wykład 2 Witold Dyrka witold.dyrka@pwr.wroc.pl 5/3/212

Program wykładów. Informatyka. Wprowadzenie do Matlaba (13.2.12) 1. Matlab dla programistów C/C++ (2.2.12) 2. Optymalizacja obliczeń. Grafika (5.3.12) 3. Programowanie zorientowane obiektowo (19.3.12) 4. Programowanie zorientowane obiektowe w praktyce (2.4.12) 5. Graficzny interfejs użytkownika (16.4.12) 6. Obliczenia numeryczne (3.4.12) 7. Kolokwium (14.5.12)

Dzisiejszy wykład w oparciu o... MATLAB Product Documentation. Techniques for Improving Performance http://www.mathworks.com/help/techdoc/matlab_prog/f8-784135.html S. McGarrity. Programming Patterns: Maximizing Code Performance by Optimizing Memory Access. The MathWorks News & Notes - June 27 http://www.mathworks.com/company/newsletters/news_notes/june7/patterns.html MATLAB Product Support. 119 - Code Vectorization Guide. http://www.mathworks.com/support/tech-notes/11/119.html The Mathworks. Accelerating MATLAB (dot. wersji 6.5) http://www.ee.columbia.edu/~marios/matlab/accel_matlab.pdf P. Getreuer. Writing Fast Matlab Code (dot. wersji R28b) http://www.sal.ufl.edu/newcomers/matlab_optimization_2.pdf B. Mrozek, Z. Mrozek. MATLAB i Simulink. Poradnik użytkownika. Wydanie III. Helion 21. Rozdział 4. M. Kotulska. Informatyka wykład 3: Wykresy i grafika w Matlabie. PWr. www.if.pwr.wroc.pl/~kotulska/informatyka/info3.ppt

Program na dziś (1) Optymalizacja kodu prealokacja tablic indeksowanie wektoryzacja akcelerator Just-In-Time Grafika

Prealokacja tablic Matlab potrafi automatycznie powiększać tablice >> X = 1 X = 1 >> X(2,1) = 2 X = 1 2 jeśli zarezerwowany na tablicę obszar był za mały musiał zarezerwować większy obszar i przenieść tam dane to zajmuje czas! jeśli sytuacja powtarza się w pętli staje się to krytyczne!! Lepiej od razu zarezerwować całą pamięć funkcja zeros

Prealokacja tablic test t=zeros(1,1); for k=1:1 clear b tic for i=1:3 b(i) = i^2; end t(k) = toc; end mean(t) t2=zeros(1,1); for k=1:1 clear b tic b=zeros(1,3); for i=1:3 b(i) = i^2; end t2(k) = toc; end mean(t2) mean(t)/mean(t2) % tablica przechowująca kolejne czasy obliczeń % 1 powtórzeń eksperymentu % usuwamy b z przestrzeni roboczej % czas START! % testowany kod: pętla bez prealokacji % czas STOP! % średni czas wykonania pętli wewnętrznej % R27b: 6ms R211b: 11.ms % tablica przechowująca kolejne czasy obliczeń % 1 powtórzeń eksperymentu % usuwamy b z przestrzeni roboczej % czas START! % testowany kod: pętla z prealokacją % czas STOP! % średni czas wykonania pętli wewnętrznej % R27b:.25ms R211b:.225ms % przyspieszenie % R27b: 24x R211b: 49x

Dostęp do kolumn jest szybszy Nowoczesne procesory przechowują ostatnio używane fragmenty pamięci RAM w szybszej pamięci cache MATLAB umieszcza elementy w kolumnach tablic w ciągłym bloku pamięci przy pierwszym dostępie do elementu kolumny, wszystkie elementy mogą znaleźć się w cache'u Wniosek iterację po tablicy wielowymiarowej zaczynaj od kolumn N=2e3; x=randn(n); y=zeros(n); for w=1:n % wiersze for k=1:n % kolumny if x(w,k)>= y(w,k)=x(w,k); end end end.19 sek. N=2e3; x=randn(n); y=zeros(n); for k=1:n % kolumny for w=1:n % wiersze if x(w,k)>= y(w,k)=x(w,k); end end end.14 sek.

Indeksowanie tablic (1) wiersz-kolumna (subscripts) parametrem jest adres elementu/ów, np. A(2,3), B(6,:,2:5) A = 11 14 17 12 15 18 13 16 19 >> A(2,3) % wiersz nr 2, kolumna nr 3 ans = 18 >> A(2:3,1:2) ans = 12 15 13 16

Indeksowanie tablic (2) liniowe parametrem jest numer kolejny elementu, np. A(8) A = 11 14 17 12 15 18 13 16 19 >> A(8) % element nr 8 ans = 18 >> A(1:3) ans = 11 12 13 >> A([4;5;6]) ans = 14 % kształt zwracanego wektora wartości 15 % zależy od kształtu wektora indeksów 16

Indeksowanie tablic (3) logiczne parametrem jest tablica zero-jedynkowa o tym samym wymiarze co tablica indeksowana A = 11 14 17 12 15 18 13 16 19 >> ind = mod(a,2)== % tworzy macierz logiczną ind = 1 % true (1) gdy A%2== 1 1 % false() gdy A%2!= 1 % >> A(ind) % zwraca elementy A, ans = 12 % na miejscu których 14 % w ind jest 1 16 % (parzyste) 18

Użyteczne techniki Usuwanie wierszy i kolumn A = 11 14 17 12 15 18 13 16 19 >> A(:,2) = [] A = 11 17 12 18 13 19 >> A(1:2,:) A = 13 19 Replikacja skalara / wektora (tzw. trik Tony'ego) >> c = 5 c = 5 >> c = c(ones(2,3)) c = 5 5 5 5 5 5 Replikacja macierzy >> d=(1:3)' d = 1 2 3 >> d = d(:,ones(6,1)) d = 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 >> B = repmat(eye(2),2,4) B = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Wektoryzacja MATLAB został napisany do wykonywania działań na macierzach posiada wbudowane funkcje obliczeń na macierzach są szybkie, bo napisane w Fortranie i C oraz skompilowane w przeciwieństwie do funkcji wbudowanych, M-funkcje (takie jakie piszemy na laboratoriach) są wolne, bo parsowane i interpretowane instrukcja po instrukcji Wektoryzacja to zamienienie kodu wykonywanego w pętli na skalarach na kod wykonywany przez f-cje wbudowane na macierzach

Wektoryzacja obliczeń test t2=zeros(1,1); for k=1:1 clear b tic b=zeros(1,3); for i=1:3 b(i) = i^2; end t2(k) = toc; end median(t2) t3=zeros(1,1); for k=1:1 clear b tic b = (1:3).^2; t3(k) = toc; end median(t3) median(t2)/median(t3) % tablica przechowująca kolejne czasy obliczeń % 1 powtórzeń eksperymentu % usuwamy b z przestrzeni roboczej % czas START! % testowany kod: pętla z prealokacją % czas STOP! % średni czas wykonania pętli wewnętrznej % R27b:.226ms % tablica przechowująca kolejne czasy obliczeń % 1 powtórzeń eksperymentu % usuwamy b z przestrzeni roboczej % czas START! % testowany kod obliczenia na wektorze % czas STOP! % średni czas wykonania pętli wewnętrznej % R27b:.92ms % przyspieszenie % R27b: 2.45x

http://www.mathworks.com/support/tech-notes/11/119.html Wektoryzacja przykład 2 % Średnia geometryczna elementów dwóch macierzy, % w drugiej każdy element pomniejszony o 1 % Metoda klasyczna: A = magic(1); B = pascal(1); for m = 1:1 for n = 1:1; X(m,n) = sqrt(a(m,n)) * (B(m,n) 1); end end % Metoda wektorowa: A = magic(1); B = pascal(1); X = sqrt(a).*(b-1); Kod zwektoryzowany jest zwięzły i przejrzysty

http://www.mathworks.com/support/tech-notes/11/119.html Wektoryzacja przykład 3 % Wartość elementu zależy od poprzedniego elementu % z wykorzystaniem dodawania i mnożenia % Metoda klasyczna: n=1; V_B = 1*ones(1,n); % prealokacja V_B2 = 1*ones(1,n); % ScaleFactor=rand(1,n-1); for i = 2:n V_B(i) = V_B(i-1)*(1+ScaleFactor(i-1)); end for i=2:n V_B2(i) = V_B2(i-1)+3; end % Metoda wektorowa: n=1; V_A = 1*ones(1,n); % prealokacja V_A2 = 1*ones(1,n); % ScaleFactor=rand(1,n-1); V_A = cumprod([1 1+ScaleFactor]); V_A2 = cumsum([1 3*ones(1,n-1)]);

Wektoryzacja obliczania wartości funkcji dwóch zmiennych Niech F(x,y) = x exp(-x^2 y^2) chcemy znać wartość F dla każdego punktu (x, y), x x, a y y, np. x = [ x1 x2 x3 x4 ] y = [ y1 y2 y3 ] utworzymy siatki obliczeniowe: [X, Y] = meshgrid(x,y) X = [ x1 x2 x3 x4 ] Y = [ y1 y1 y1 y1 ] [ x1 x2 x3 x4 ] [ y2 y2 y2 y2 ] [ x1 x2 x3 x4 ] [ y3 y3 y3 y3 ] size(x) = size(y) = length(y) x length(x) wykonamy obliczenia na siatce: F = X.* exp(-x.^2 - Y.^2)

http://www.mathworks.com/support/tech-notes/11/119.html Wektoryzacja obliczania wartości funkcji dwóch zmiennych (2) x = (-2:.2:2); y = (-1.5:.2:1.5)'; [X,Y] = meshgrid(x, y); F = X.* exp(-x.^2 Y.^2);. 5 -. 5 2 1-1 - 2-2 - 1 1 2

Wektoryzacja sterowania Wektoryzować można również porównania wynik: tablice indeksów logicznych instrukcje warunkowe na podstawie indeksów logicznych % Przypisanie co drugiemu elementowi myvector wartości jego cotangensa % pętla for: myvector = 1:1; for x=1:length(myvector) if(mod(myvector(x),2)) myvector(x) = cot(myvector(x)); end end % mod - modulo % cot - cotangens % po wektoryzacji: myvector = 1:1; % 1 2 3 4 5 6 1 indextrue = mod(myvector,2)==1; % 1 1 1 myvector(indextrue) = cot(myvector(indextrue)); % 1.4 2. -1.1 4. -3.3 6. 1

Wektoryzacja sterowania (2) Niech param_funk macierz o wymiarze 2181 x 11 w wierszach modele kanałów białkowych (2181) w kolumnach parametry charakterystyki I-V (11), np. kolumny 3,7 prąd jonowy przy -1mV / +1mV kolumny 4,8 selektywność przy -1mV / +1mV kolumna 9 rektyfikacja (stosunek prądu) przy +1/-1mV Zadanie: znaleźć średnią rektyfikację modeli, dla których prąd jonowy (wartość bezwzględna) > 1pA selektywność > 1:1 >> ind_prad = param_funk(:,3) < -1 & param_funk(:,7) > 1; % 123 >> ind_sel = param_funk(:,4) > 1 & param_funk(:,8) >1; % 475 >> mean(param_funk(ind_prad & ind_sel, 9)) % wynik:.9792 indeksy wybranych modeli indeks parametru rektyfikacji

http://www.ee.columbia.edu/~marios/matlab/accel_matlab.pdf Jak przyspieszyć interpreter? MATLAB<6.5 przetwarzał program w dwóch krokach Parsowanie m-kodu na p-kod Wykonanie p-kodu przez interpreter instrukcja po instrukcji narzut czasowy interpretera w stosunku do kodu skompilowanego szczególnie dotkliwe w pętlach na skalarach Najlepszym rozwiązaniem była wektoryzacja nie zawsze możliwa czasem nieczytelny kod

http://www.sal.ufl.edu/newcomers/matlab_optimization_2.pdf Kompilacja Just-In-Time Rozwiązaniem jest generacja kodu Just-In-Time (JIT) Jeśli kod ma być wykonany wiele razy interpreterowi może opłacać się skompilować go Największe przyspieszenie uzyskano w pętlach for i while także w instrukcjach warunkowych if, elseif, switch pod warunkiem, że dane są typu double, logical, char, int8-32, uint8-32 nie więcej niż 3-wymiarowe (Matlab R28b; 2-wym. Matlab 6.5) kod jest niezwektoryzowany Akcelerator można włączyć(domyślnie) / wyłączyć: >> feature accel on/off

Program na dziś (2) Optymalizacja kodu Grafika wykresy 2-wymiarowe punktowe i liniowe: plot formatowanie wykresów (title, axes, xlabel, legend) wizualizacji danych (area, bar, hist, stairs, stem) powierzchniowe i konturowe (pcolor, contour) wykresy 3-wymiarowe siatkowe i powierzchniowe (mesh, surf) wizualizacja obiektów 3-wymiarowych (slice, isosurface) zapis rysunku do pliku (print, saveas) animacje (getframe, movie)

Wykresy 2-wymiarowe: plot plot(x,y) % wykres punktów (x,y) należących do X i Y plot(y) % X = indeks Y plot(x,y,s) % S format wykresu plot(x,y,s,'nazwa_param','wart_param',...) plot(x1,y1,s1, X2,Y2,S2, X3,Y3,S3,...) % wiele wykresów % w jednym % Przykład: x = -pi:pi/1:pi; y = tan(sin(x)) sin(tan(x)); plot(x,y,'--rs','linewidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','g',... 'MarkerSize',1) 3 2 1-1 - 2-3 - 4-3 - 2-1 1 2 3 4

Formatowanie wykresu >> help plot KOLOR MARKER PUNKTU STYL_LINII b blue. point - solid g green o circle : dotted r red x x-mark -. dashdot c cyan + plus -- dashed m magenta * star (none) no line y yellow s square k black d diamond w white v triangle (down) ^ triangle (up) 3 < triangle (left) > triangle (right) 2 p pentagram h hexagram 1 >> plot(x,y,'rs--') % kolor: red % punkt: square ( ) % linia: dashed (--) - 1-2 - 3-4 - 3-2 - 1 1 2 3 4

Parametry dodatkowe x = -pi:pi/1:pi; y = tan(sin(x)) - sin(tan(x)); plot(x,y,'--rs','linewidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','g',... 'MarkerSize',1) % grubość linii % kolor obwódki markera pktu % kolor obszaru markera pktu % rozmiar markera 3 2 1-1 Jak sprawdzić zestaw wszystkich parametrów? - 2-3 - 4-3 - 2-1 1 2 3 4

Interaktywny dostęp do parametrów Kliknij na strzałkę aby przejść w tryb edycji Kliknij na elemencie wykresu aby go zaznaczyć Kliknij prawym klawiszem aby otworzyć menu kontekstowe Kliknij dwukrotnie na elemencie wykresu, aby otworzyć rozszerzone okno narzędzi (Plot Tools)

Interaktywny dostęp do parametrów (2) Kliknij na ostatnią ikonkę aby otworzyć rozszerzone okno narzędzi (Plot Tools) i zadokować w nim rysunek

Interaktywny dostęp do parametrów (3) Kliknij na strzałkę aby przejść w tryb edycji Kliknij na elemencie wykresu aby go zaznaczyć np. oś współrzędnych (axes) W edytorze właściwości (Property Editor) ustaw parametry elementu Kliknij More Properties... jeśli potrzebujesz bardziej szczegółowych parametrów otworzy się Inspector

Inspektor właściwości

Oddokowanie okna Uwaga! Okno Figures pozostaje otwarte

Dalsza obróbka wykresu >> plot(x,abs(cos(x)),'bs-',x,cos(x).^2,'go:') Osie zakres >> axis([-pi pi 1]) nazwy Siatka >> xlabel('x'),ylabel('y') >> grid on Tytuł >> title('prezentacja...') Legenda >> legend(' cos(x) ',... 'cos(x)^2') Uwaga! formatowanie wzorów wzorowane na LaTex-ie

Proste wykresy 2-wymiarowe Punktowe i liniowe plot - wykres liniowy 2-wym. we współrzędnych kartezjańskich plotyy - wykres liniowy 2-wym. z dwoma osiami wartości semilogx - wykres liniowy 2-wym. z osią X w skali logarytmicznej semilogy - wykres liniowy 2-wym. z osią Y w skali logarytmicznej loglog - wykres liniowy 2-wym. z osiami X i Y w skali logarytmicznej line - dodaje linię do wykresu liniowego scatter - wykres punktowy (np. wizualizacja korelacji) polar - wykres we współrzędnych polarnych

Wykresy 2-wymiarowe Wizualizacja danych area - wykres powierzchniowy bar, barh - wykres słupkowy wertykalny i horyzontalny bar3, bar3h - wykresy słupkowe przestrzenne pie, pie3 - wykres kołowy płaski i przestrzenny ribbon - wykres wstążkowy (liniowy przestrzenny) hist - histogram stairs - wykres schodkowy dla danych dyskretnych stem - wykres łodyga liście dla danych dyskretnych

y y y y Wykresy 2-wymiarowe (2) 1 A R E A 1 B A R 2 i n d e k s 1 5 B A R 3 H - 1-1 1 5-2 5 1 1 5 2 i n d e k s S T A I R S - 2 5 1 1 5 2 i n d e k s S T E M 4-2 - 1 y 1 H I S T 1 1 3-1 - 1 c z e s t o s c 2 1-2 5 1 1 5 2 i n d e k s - 2 5 1 1 5 2 i n d e k s - 2-1 1 y >> y = randn(1,2); >> subplot(2,3,1), area(y), axis tight, title('area'), % subplot(n,m,k) xlabel('indeks'), ylabel('y'); % - dzieli rysunek >> subplot(2,3,2), bar(y), axis tight, title('bar'), % na NxM części xlabel('indeks'), ylabel('y'); % - i przełącza >> subplot(2,3,3), bar3h(y), axis tight, title('bar3h'), % do K-tej części xlabel('indeks'), ylabel('y'); >> subplot(2,3,4), stairs(y), axis tight, title('stairs'), % axis tight xlabel('indeks'), ylabel('y'); % zakresy osi ciasno >> subplot(2,3,5), stem(y), axis tight, title('stem'), % opasują dane xlabel('indeks'), ylabel('y'); >> subplot(2,3,6), hist(y), axis tight, title('hist'), xlabel('y'), ylabel('czestosc');

Wykresy izoliniowe (konturowe) i powierzchniowe Przekrój przez wolumetryczną mapę potencjału elektrostatycznego w kanale jonowym (białko) pcolor pseudokolorowa contour kontur wizualizacja macierzy contourf kontur wypełniony

Wykresy 3-wymiarowe Wersje wykresów 2-wymiarowych plot3 - wykres liniowy 3-wym. we współrzędnych kartezjańskich scatter3 - wykres punktowy w przestrzeni 3-wym. stem3 - wykres łodyga liście dla danych dyskretnych (3-wym.) contour3 - wykres izoliniowy w przestrzeni 3-wym. Wykresy siatkowe i powierzchniowe mesh, meshz - wykres siatkowy i siatkowy z kurtyną meshc - wykres siatkowo-konturowy surf - wykres powierzchniowy surfc - wykres powierzchniowo-konturowy

Wykresy siatkowe i powierzchniowe. 5 M E S H. 5 M E S H Z x = (-2:.2:2); y = (-1.5:.2:1.5)'; [X,Y] = meshgrid(x, y); F = X.* exp(-x.^2 Y.^2); -. 5 2-2 - 2 2 -. 5 2-2 - 2 2 mesh(x,y,f) meshz(x,y,f) S U R F S U R F C. 5. 5 -. 5 2-2 - 2 2 -. 5 2-2 - 2 2 surf(x,y,f) surfc(x,y,f), shading flat % shading flat % - usuwa linie siatki

Wizualizacja obiektów 3-wymiarowych P r z e k r o j p r z e z k a n a l b i a l k o w y 3 5 3 2 5 2 1 5 1 5 4 3 2 1 1 2 3 % data mapa wolumetryczna % kanału białkowego % w błonie komórkowej slice(data,18,32,18,'nearest') axis equal title('przekroj przez kanal... bialkowy') % data mapa wolumetryczna % kanału białkowego isosurface(data); axis equal grid on title('wizualizacja mapy... wolumentrycznej kanalu bialkowego')

Zapis rysunków Z linii poleceń lub funkcji print -urządzenie -opcje nazwa_pliku % urządzenie drukarka albo plik, np. % -dbmp bitmapa 24bit % -djpeg - obraz JPEG % -dpdf - dokument PDF % opcje m.in. rozdzielczość, np. -r3 oznacza 3 dpi >> print -djpeg -r6 moj_obraz saveas(rysunek,'nazwa_pliku') % rysunek uchwyt do rysunku (będziemy o tym mówić później:-) % np. uchwyt aktualnego rysunku zwraca funkcja gcf >> saveas(gcf, 'moj_dokument.pdf'); Interaktywnie przez menu rysunku File / Save as... File / Export Setup... / Export... (dodatkowe opcje)

Tworzenie animacji % data mapa wolumetryczna kanału białkowego w błonie % Możesz stworzyć własny uproszczony model kanału: % n = 21; % [X, Y] = meshgrid(linspace(-1,1,n)); % R2 = X.^2 + Y.^2 % rmax =.5; rmin =.5; m = 1; % A = linspace(-rmax+rmin,rmax-rmin,m).^2 + rmin.^2; % R2A = repmat(r2,[1 1 length(a)]); % R2A = shiftdim(r2a,2); % AR2 = repmat(a',[1 size(r2,1) size(r2,2)]); % data = double(r2a>ar2); for k=1:size(data,1) slice(data,size(data,2)/2,k,size(data,3)/2,'nearest') animacja(k) = getframe; % tworzy ramkę z wykresu/rysunku end movie(animacja) % wyświetla animację (sprawdź opcje)

Dziś najważniejsze było... Aby program był prostszy i działał szybciej prealokuj tablice poznaj i stosuj różne metody indeksowania wektoryzuj, jeśli potrafisz Warto wiedzieć jak Matlab działa aby pisać lepsze programy! Wypróbuj bardzo duże możliwości grafiki Matlaba pamiętaj o opisywaniu wykresów :-)

A za 2 tygodnie... Złożone typy danych tablice komórkowe (cell) struktury (struct) Programowanie zorientowane obiektowo