MATLAB funkcje graficzne Ryszard Myhan Podstawowe typy obiektw
MATLAB (funkcje graficzne) Ryszard Myhan
Podstawowe typy obiektów graficznych § Wykresy i obiekty graficzne w Matlabie tworzą strukturę hierarchiczną. § Struktura ta wraz z regułami jej dotyczącymi nazywa się GRAFIKĄ UCHWYTÓW (Handle Graphics). MATLAB (funkcje graficzne) 2
Zasady dotyczące obiektów graficznych § Najistotniejsze zasady dotyczące obiektów graficznych są następujące: Wszelkie obiekty graficzne powstają w oknach graficznych nazywanych FIGURE. • • Okien takich może być wiele. Okno powstaje samoczynnie przy wykonywaniu poleceń graficznych lub może być utworzone poleceniem figure albo zmienna = figure. Przy tworzeniu zarówno okna jak każdego obiektu powstaje jego unikalny identyfikator zwany uchwytem (handle). MATLAB (funkcje graficzne) 3
Zasady dotyczące obiektów graficznych Informację o identyfikatorze aktywnego obiektu graficznego można uzyskać korzystając z funkcji: • • gcf - uchwyt bieżącego okna (get current figure), • gco - uchwyt bieżącego obiektu (get current object), gca - uchwyt bieżącego układu współrzędnych (get current axes), Wszystkie funkcje tworzące obiekty graficzne mają podobną składnię: uchwyt = obiekt('Cecha', Wartość, . . . ) F 1=figure('Position', [5 40 790 300], 'Name', 'TEST'); MATLAB (funkcje graficzne) 4
Zasady dotyczące obiektów graficznych Każdy obiekt ma określone własności, które można sprawdzać i pobierać ich wartości przy pomocy funkcji get oraz modyfikować przy pomocy funkcji set: get(F 1, 'Color') ans = 0. 8000 set(F 1, 'Color', [0. 9, 0. 7, 0. 95], 'Menu. Bar', 'none'); Każda własność ma swoją wartość domyślną, która będzie zastosowana jeśli użytkownik nie poda innej, (na przykład kolor okna graficznego domyślnie będzie szary: [0. 8]). MATLAB (funkcje graficzne) 5
Zasady dotyczące obiektów graficznych Użytkownik może określać własności albo przy tworzeniu obiektu (p. 4), albo później korzystając z funkcji set oraz uchwytu obiektu (p. 5): set(uchwyt_obiektu, 'Nazwa_cechy', wartość, . . . ) Obiekty graficzne podlegają hierarchii określającej który obiekt jest dla danego nadrzędny (parent = rodzic) a który podrzędny (child = dziecko, potomek). MATLAB (funkcje graficzne) 6
Funkcje graficzne § Funkcje graficzne oferowane przez MATLAB można podzielić na kilka grup: • funkcje prezentacji danych w postaci wykresów dwu- i trójwymiarowych • funkcje edycji rysunków (np. usuwanie, zmiana skali, dodawanie napisów) • funkcje rysunkowe typowe dla bibliotek języków programowania (linie, figury, bryły itp. ) • funkcje graficzne niskiego poziomu MATLAB (funkcje graficzne) 7
Zarządzanie rysunkami § MATLAB pozwala posługiwać się jednocześnie kilkoma oknami graficznymi Ä przy czym w danej chwili tylko jedno z nich jest oknem aktywnym § Pierwsze okno powstaje automatycznie po wywołaniu dowolnej funkcji graficznej § § Następne okna tworzy się funkcję figure Wybrane okna można zamykać funkcją close Wyczyszczenie okna umożliwia funkcja clf Okno można podzielić na części (subplot) MATLAB (funkcje graficzne) 8
Zarządzanie rysunkami figure tworzy nowe okno o kolejnym, wolnym numerze figure(nr_okna) tworzy nowe (lub uaktywnia istniejące) okno o wskazanym numerze h=figure Tworzy nowe okno graficzne o uchwycie zapamiętanym w zmiennej h close zamyka aktywne okno rysunkowe clf subplot(m, n, p) MATLAB (funkcje graficzne) czyszczenie aktywnego okna (clf – Clear Figure) dzieli aktywne okno na części m – liczba wykresów w pionie; n – liczba wykresów w poziomie; p – numer aktywnego pola wykresu 9
Tworzenie i modyfikowanie okna graficznego Ø Przy tworzeniu wykresu samoczynnie powstaje okno graficzne, jeśli jednak będziemy budować interfejs graficzny programu lub chcemy aby kolejny wykres powstał w nowym oknie to musimy je utworzyć komendą: figure lub zmienna = figure § druga postać komendy tworzy i wyświetla okno oraz zapamiętuje jego identyfikator czyli uchwyt (handle) w zmiennej (np. F 1 = figure; ) § uchwyt F 1 może być wykorzystywany zarówno do: • aktywacji tego okna (np. figure(F 1)), • jak i zarządzania jego cechami (np. set(F 1, 'Position', [5 40 790 300], 'Color', [0. 5 0. 9]) MATLAB (funkcje graficzne) 10
Zarządzanie rysunkami Ø Okno graficzne FIGURE ma wiele cech – niektóre często stosowane to: Name nazwa, która pokaże się w pasku tytułowym formatki Position [Xp, Yp, Dx, Dy] - położenie lewego dolnego rogu Xp, Yp, oraz rozmiary Dx, Dy, domyślnie w pikselach (można zadać inne jednostki zmieniając cechę Units) Color kolor tła o składowych [red green blue] określany trzema liczbami z zakresu 0 do 1 Menu. Bar który jeśli ma wartość 'figure' jest menu standardowym, a gdy 'none' to brak menu set(F 1, 'Position', [5 40 790 300], 'Name', 'TESTOWANIE', 'Color', [0. 9, 0. 7, 0. 95], 'Menu. Bar', 'none'); MATLAB (funkcje graficzne) 11
Cechy okna graficznego F 1=figure pause set(F 1, 'Position', [5 40 790 300], 'Name', 'TESTOWE', 'Color', [0. 9, 0. 7, 0. 95], 'Menu. Bar', 'none'); MATLAB (funkcje graficzne) 12
Podział okna graficznego Ø W celu uzyskania kilku wykresów w jednym oknie należy wykorzystać funkcję subplot(m, n, p), gdzie: • m - liczba wykresów w pionie; • n - liczba wykresów w poziomie; • p - kolejny numer wykresu. subplot(2, 3, 5); MATLAB (funkcje graficzne) 1 2 3 4 5 6 13
Skalowanie wykresów Ø Skala wykresu dobierana jest automatycznie, z uwzględnieniem zakresu prezentowanych danych. Ø W celu jej zmiany należy wywołać z odpowiednimi parametrami funkcję axis: zwraca wektor zakresu skali na osi x (od x 1 do x 2) i osi y (od y 1 do y 2) ustala zakres skali na osi x axis([x 1 x 2 y 1 y 2]) (od x 1 do x 2) i osi y (od y 1 do y 2) ustawia domyślny tryb automatycznego axis('auto') skalowania axis('equal') MATLAB (funkcje graficzne) zmienia skalę w ten sposób, aby odcinki na obu osiach mające tę samą długość miały ten sam rozmiar na ekranie 14
Skalowanie wykresów axis('square') powoduje, że obie osie będą miały tyle samo jednostek długości axis('normal') przywraca standardowe ustawienia, usuwając restrykcje narzucone przez opcje 'equal' i 'square' axis('image') powoduje, że układ dostosowuje się do wymiarów obrazu axis('off') ukrywa osie wraz z ich nazwami axis('on') przywraca wyświetlanie osi wykresu axis('ij') skalowanie w układzie macierzowym axis('xy') skalowanie w układzie kartezjańskim axis('state') zwraca informacje o aktualnych ustawieniach układu współrzędnych MATLAB (funkcje graficzne) 15
Skalowanie wykresów subplot(2, 2, 1) subplot(2, 2, 2) axis([-1 1 0 2]) subplot(2, 2, 3) axis('square') subplot(2, 2, 4) axis('off') MATLAB (funkcje graficzne) 16
Opis wykresów Ø Wykresy można opisać podając tytuł, opisy osi, napisy, legendy itp. title(tekst) xlabel(tekst) ylabel(tekst) text(x, y, tekst) grid on grid off MATLAB (funkcje graficzne) wypisuje nazwę powyżej pola aktywnego układu współrzędnych wypisuje tekst pod poziomą osią (osią x) aktywnego układu współrzędnych wypisuje tekst obok osi pionowej (osi y) aktywnego układu współrzędnych wypisuje zwartość łańcucha tekst w miejscu wykresu określonym przez współrzędne x i y nanosi na aktywny wykres (on) lub ukrywa (off) pomocniczą siatkę współrzędnych 17
Opis wykresów title('To jest nazwa wykresu') xlabel('To jest opis osi x') ylabel('To jest opis osi y') text(0. 2, 0. 5, 'To jest opis w polu wykresu') grid on MATLAB (funkcje graficzne) 18
Wykresy Ø Istnieją funkcje pozwalające na tworzenie dowolnych rysunków składających się z odcinków linii plot(y) plot(x, y, s) rysuje wykres ciągu elementów wektora y względem ich indeksu rysuje wykres ciągu elementów wektora y względem elementów wektora x j. w. - parametr s to łańcuch tekstowy definiujący rodzaj i (lub) kolor linii wykresu rysuje jednocześnie wiele wykresów , gdy na liście argumentów powtarzane są plot(x 1, y 1, s 1, x 2, y 2, s 2, . . ) kolejne pary wektorów xi i yi (oraz łańcuch si) plot(x 1, y 1, x 2, y 2, . . ) MATLAB (funkcje graficzne) 19
Wykresy – kody koloru i rodzaju linii Kod y m c r Kod : . x * s Kolor żółty karmazyn siny czerwony Ang. yelow magtneta cyan red Opis linia ciągła linia kropkowana tylko podane punkty iksy w punktach gwiazdki w punktach kwadraty w punktach MATLAB (funkcje graficzne) Kod g b w k Kolor zielony niebieski biały czarny Ang. green blue white black Kod --. o * v p Opis linia kreskowana linia kropka-kreska kółka w punktach gwiazdki w punktach trójkąty w punktach pentagramy 20
Wykresy – funkcja plot() % Funkcja plot - przykład x=0: 0. 1: 2*pi; y 1=sin(x); y 2=cos(2*x); plot(x, y 1, 'r-', x, y 2, 'k-. '); grid on; axis([0 2*pi -1 1]) legend('sin(x)', 'cos(2*x)') MATLAB (funkcje graficzne) 21
Wykresy – własności linii plot(X, Y, Line. Spec, 'Property. Name', Property. Value) h = plot(X, Y, Line. Spec, 'Property. Name', Property. Value) § Line. Spec – kolor i rodzaj linii; § Property. Name – nazwa własności: • Line. Style – styl linii obiektu • Line. Width – grubość linii w punktach, • Marker – wybór symbolu markera, • Marker. Size – rozmiar markera, • Marker. Edge. Color – kolor krawędzi (linii) markera • Marker. Face. Color – kolor wypełnienia markera (tylko kształty zamknięte MATLAB (funkcje graficzne) 22
Wykresy – własności linii % Funkcja plot - przykład x = -pi: pi/10: pi; y = tan(sin(x)) - sin(tan(x)); plot(x, y, '--rs', 'Line. Width', 2, 'Marker. Edge. Color', 'k', . . . 'Marker. Face. Color', 'g', 'Marker. Size', 10) MATLAB (funkcje graficzne) 23
Wykresy – nakładanie i usuwanie rysunków Ø Każda z funkcji graficznych umieszcza „własny” obiekt w aktywnym oknie, przy czym domyślnie operacja ta poprzedzana jest uprzednim wyczyszczeniem okna. hold on hold off ishold zapobiega czyszczeniu okna graficznego przed rozpoczęciem rysowania nowego robiektu przywraca czyszczenie okna (ustawienie standardowe) zwraca 1 - hold on; 0 - hold off Ø Na usunięcie wskazanego obiektu z aktywnego okna pozwala funkcja delete() delete(o) gdzie o jest uchwytem usuwanego obiektu MATLAB (funkcje graficzne) 24
Wykresy – nakładanie i usuwanie rysunków x = -pi: pi/10: pi; y 1=sin(x); y 2=cos(x); subplot(3, 1, 1) o 1=plot(x, y 1, 'r', 'Line. Width', 2) pause o 2=plot(x, y 2, 'b', 'Line. Width', 3) subplot(3, 1, 2); hold on o 1=plot(x, y 1, 'r', 'Line. Width', 2) o 2=plot(x, y 2, 'b', 'Line. Width', 3) subplot(3, 1, 3); hold on o 1=plot(x, y 1, 'r', 'Line. Width', 2) o 2=plot(x, y 2, 'b', 'Line. Width', 3) delete(o 1) MATLAB (funkcje graficzne) 25
Wykresy – skalowanie logarytmiczne loglog(x) loglog(x, y, s) loglog(x 1, y 1, x 2, y 2, . . ) semilogx(x, y) semilogx(x, y, s) semilogx(x 1, y 1, x 2, y 2, . . ) semilogly(x) semilogy(x, y, s) semilogy(x 1, y 1, x 2, y 2, . . ) MATLAB (funkcje graficzne) rysuje wykresy tak jak funkcja plot, lecz używając skali logarytmicznej na obu osiach układu współrzędnych rysuje wykresy tak jak funkcja plot, lecz używając skali logarytmicznej na osi odciętych układu współrzędnych rysuje wykresy tak jak funkcja plot, lecz używając skali logarytmicznej na osi rzędnych układu współrzędnych 26
Wykresy – skalowanie logarytmiczne x = 0: 1000; subplot(2, 2, 1); subplot(2, 2, 2); subplot(2, 2, 3); subplot(2, 2, 4); MATLAB (funkcje graficzne) y=10*x; plot(x, y); loglog(x, y); semilogx(x, y); semilogy(x, y); grid on 27
Funkcja fplot() fplot(f, granice, n) fplot(f, granice, n, kąt, przedziały) rysuje wykres funkcji określonej parametrem f, punkty w których należy obliczyć wartość dobierane są automatycznie f – łańcuch znaków z nazwą pliku zawierającego definicję funkcji granice – dwuelementowy wektor określający przedział n – liczba określająca minimalną liczbę punktów wykresu (25) kąt –kąt (w stopniach) między sąsiednimi odcinkami wykresu, powyżej którego zwiększana jest gęstość próbkowania (10) przedziały - maksymalna liczba punktów próbkowania, jaka może dodana w gwałtownie zmieniających się miejscach wykresu MATLAB (funkcje graficzne) 28
Funkcja fplot() x=-5: 0. 5: 5; y=funk(x); [xx, yy]=fplot('funk', [-5 5]); plot(x, y, 'r'); hold on; plot(xx, yy, 'b'); grid on legend('plot()', 'fplot()') function y=funk(x) y=sin(3*pi*atan(x)); MATLAB (funkcje graficzne) 29
Funkcja polar() polar(t, r, s) rysuje wykres w układzie biegunowym t – wektor określający położenie kątowe kolejnych punktów wykresu; r – wektor odległości kolejnych punktów od początku układu; s – łańcuch określający kolor i rodzaj linii. t=-pi: 0. 01: 2*pi; r=sin(5*t)+cos(4*t); polar(t, r, 'r') MATLAB (funkcje graficzne) 30
Funkcja comet() comet(y) comet(x, y, p) funkcja rysuje ruchomy wykres imitujący lot komety x – wektor zawierający odcięte punktów; y – wektor zawierający rzędne punktów; p – liczba z przedziału (0, 1) określająca długość ogona. %Piłka na schodach x=1: 0. 005: 4; r=rem(x, floor(x)); y=5 -floor(x); y 2=y+abs(sin(6*pi*r)). *exp(-4*r); comet(x, y 2, 0. 5); MATLAB (funkcje graficzne) 31
Funkcja errorbar() errorbar(y, e) errorbar(x, y, e) rysuje wykres funkcji zaznaczając, jednocześnie podane odchylenia x – wektor zawierający odcięte punktów; y – wektor zawierający rzędne punktów; e – wektor odchyleń w każdym z punktów x=-pi/2: 0. 1: pi/2; y 1=cos(x); %generowanie odchyleń err=rand(1, length(x))*0. 2; errorbar(x, y 1, err); grid on; hold on; plot(x, err, 'ro') MATLAB (funkcje graficzne) 32
Wykresy danych dyskretnych – funkcja bar() bar(y) bar(x, y) bar(y, s) bar(x, y, s) rysuje wykres słupkowy o wysokościach odpowiadającej kolejnym wartościom elementów wektora y; parametr x określa wartości odciętych – gdy go brak słupki są rozmieszczane równomiernie x – wektor zawierający odcięte punktów; y – wektor zawierający rzędne punktów; s – łańcuch określający kolor wypełnienia. x=0: 0. 3: pi; y=sin(x)+x; bar(x, y, 'c') grid on MATLAB (funkcje graficzne) 33
Wykresy danych dyskretnych – funkcja stem() stem(y) stem(x, y) stem(y, s) stem(x, y, s) rysuje tzw. „wykres łodygowy”o wysokościach odpowiadającej kolejnym wartościom elementów wektora y; parametr x określa wartości odciętych – gdy go brak słupki są rozmieszczane równomiernie x – wektor zawierający odcięte punktów; y – wektor zawierający rzędne punktów; s – łańcuch określający rodzaj i kolor linii. x=0: 0. 3: pi; y=sin(x)+x; stem(x, y, 'b') grid on MATLAB (funkcje graficzne) 34
Wykresy danych dyskretnych – funkcja stairs() stairs(y) stairs(x, y) stairs(y, s) stairs(x, y, s) rysuje tzw. „wykres schodkowy” o wysokościach odpowiadającej kolejnym wartościom elementów wektora y; parametr x określa wartości odciętych – gdy go brak słupki są rozmieszczane równomiernie x – wektor zawierający odcięte punktów; y – wektor zawierający rzędne punktów; s – łańcuch określający rodzaj i kolor linii. x=0: 0. 3: pi; y=sin(x)+x; w=stairs(x, y, 'g') set(w, 'Line. Width', 2) grid on MATLAB (funkcje graficzne) 35
Histogramy– funkcja hist() hist(y, n) hist(y, x) funkcja dzieli przedział wyznaczony przez największy i najmniejszy element wektora y na podprzedziały (domyślnie 10), zlicza elementy należące do każdego z nich i prezentuje wyniki na wykresie słupkowym y – wektor elementów; n – liczba podprzedziałów; x – wektor granic podprzedziałów przy podziale nierównomiernymi. hist(randn(1, 1000), 50) grid on MATLAB (funkcje graficzne) 36
Histogramy– funkcja rose() rose(y, n) rose(y, x) funkcja dzieli przedział wyznaczony przez największy i najmniejszy element wektora y na podprzedziały (domyślnie 10), zlicza elementy należące do każdego z nich i prezentuje wyniki na histogramie kołowym y – wektor elementów; x – wektor granic podprzedziałów przy podziale nierównomiernymi; n – liczba podprzedziałów. rose(rand(1, 1000)*360, 40) grid on MATLAB (funkcje graficzne) 37
Wykresy danych zespolonych – funkcja compass() compass(z) compass(x, y) compass(z, s) compass(x, y, s) funkcja rysuje wykres, na którym elementy macierzy z są przedstawione w postaci strzałek o wspólnym początku i grotach opisanych przez współrzędne x=real(z) i y=imag(z) z – wektor elementów zespolonych; x – wektor wartości rzeczywistych; y – wektor wartości urojonych s – rodzaj i kolor linii. x=sin(0: 0. 5: 2*pi); y=cos(0: 0. 5: 2*pi); compass(x, y) MATLAB (funkcje graficzne) 38
Wykresy danych zespolonych – funkcja compass() feather(z) feather(x, y) feather(z, s) feather(x, y, s) funkcja rysuje wykres, na którym elementy macierzy z są przedstawione w postaci strzałek o początkach równomiernie rozłożonych na osi poziomej i długości równej modułom z – wektor elementów zespolonych; x – wektor wartości rzeczywistych; y – wektor wartości urojonych s – rodzaj i kolor linii. x=logspace(-1, 1, 10); y=1. /x; feather(x, y) grid on MATLAB (funkcje graficzne) 39
Wykresy 3 D – przygotowanie danych [X, Y]=meshgrid(x, y) [X, Y]=meshgrid(x) [X, Y, Z]=meshgrid(x, y, z) tworzy macierze opisujące położenie węzłów prostokątnej siatki wykresu o Argumentami funkcji są ciągi (wektory) wartości x oraz y a w wyniku uzyskuje się dwie macierze zawierające łącznie wszystkie pary współrzędnych dla których maja być wyznaczane wartości funkcji zmiennych x, y. o Elementy macierzy X, Y, Z są współrzędnymi punktów płaszczyzny będącej wykresem funkcji f(x, y). o Wiersze macierzy X są kopiami wektora x, a kolumny macierzy Y są kopiami wektora y. o Macierze wejściowe X i Y mają length(y) wierszy i length(x) kolumn. MATLAB (funkcje graficzne) 40
Kreślenie powierzchni – funkcja mesh() mesh(x, y , z, c) mesh(x, y, z) mesh(z, c) mesh(z) • Rysuje powierzchnię opisaną przez macierze x, y, z w postaci kolorowej siatki o oczkach wypełnionych kolorem tła. • Elementy macierzy c określają kolory obwódek poszczególnych oczek clc; clear all; close all % przygotowanie siatki wykresu [x, y]=meshgrid((-1: 0. 1: 2)*pi, (-1: 0. 1: 2)*pi); % obliczenie wartości funkcji z=sin(x). *sin(y)+4*exp(-(x-0. 5). ^2 -(y-0. 5). ^2); % rysowanie wykresu mesh(x, y, z) axis([-3, 6, -1, 4]) MATLAB (funkcje graficzne) 41
Kreślenie powierzchni – funkcja mesh() mesh(x, y , z, c) mesh(x, y, z) mesh(z, c) mesh(z) MATLAB (funkcje graficzne) • Rysuje powierzchnię opisaną przez macierze x, y, z w postaci kolorowej siatki o oczkach wypełnionych kolorem tła. • Elementy macierzy c określają kolory obwódek poszczególnych oczek 42
Kreślenie powierzchni – funkcja meshc() meshc(x, y , z, c) meshc(x, y, z) rysuje identyczną siatkę jak funkcja mesh i umieszcza pod nią wykres poziomicowy meshc(z, c) meshc(z) clc; clear all; close all % przygotowanie siatki wykresu [x, y]=meshgrid((-1: 0. 1: 2)*pi, (-1: 0. 1: 2)*pi); % obliczenie wartości funkcji z=sin(x). *sin(y)+2*exp(-(x-0. 5). ^2 -(y-0. 5). ^2); % rysowanie wykresu meshc(x, y, -z) axis([-3, 6, -4, 1]) MATLAB (funkcje graficzne) 43
Kreślenie powierzchni – funkcja meshc() meshc(x, y , z, c) meshc(x, y, z) rysuje identyczną siatkę jak funkcja mesh i umieszcza pod nią wykres poziomicowy meshc(z, c) meshc(z) MATLAB (funkcje graficzne) 44
Kreślenie powierzchni – funkcja meshz() meshz(x, y , z, c) meshz(x, y, z) meshz(z, c) meshz(z) rysuje identyczną siatkę jak funkcja mesh i dodatkowo umieszcza zasłony od krawędzi wykresu do płaszczyzny odniesienia clc; clear all; close all % przygotowanie siatki wykresu [x, y]=meshgrid((-1: 0. 1: 2)*pi, (-1: 0. 1: 2)*pi); % obliczenie wartości funkcji z=sin(x). *sin(y)+4*exp(-(x-0. 5). ^2 -(y-0. 5). ^2); % rysowanie wykresu meshz(x, y, z) axis([-5, 10, -1, 3]) MATLAB (funkcje graficzne) 45
Kreślenie powierzchni – funkcja meshz() meshz(x, y , z, c) meshz(x, y, z) meshz(z, c) meshz(z) MATLAB (funkcje graficzne) rysuje identyczną siatkę jak funkcja mesh i dodatkowo umieszcza zasłony od krawędzi wykresu do płaszczyzny odniesienia 46
Kreślenie powierzchni – funkcja surf() surf(x, y , z, c) surf(x, y, z) surf(z, c) surf(z) rysuje różnokolorową powierzchnię opisaną macierzami x, y i z parametr c określa kolory jakimi wypełniane są oczka siatki clc; clear all; close all % przygotowanie siatki wykresu [x, y]=meshgrid((-1: 0. 1: 2)*pi, (-1: 0. 1: 2)*pi); % obliczenie wartości funkcji z=sin(x). *sin(y)+4*exp(-(x-0. 5). ^2 -(y-0. 5). ^2); % rysowanie wykresu surf(x, y, z) axis([-3, 6, -1 4]) MATLAB (funkcje graficzne) 47
Kreślenie powierzchni – funkcja surf() surf(x, y , z, c) surf(x, y, z) surf(z, c) surf(z) MATLAB (funkcje graficzne) rysuje różnokolorową powierzchnię opisaną macierzami x, y i z parametr c określa kolory jakimi wypełniane są oczka siatki 48
Kreślenie powierzchni – funkcja surfc() surfc(x, y , z, c) surfc(x, y, z) surfc(z, c) surfc(z) rysuje powierzchnię identyczna jak funkcja surf i umieszcza pod nią wykres poziomicowy clc; clear all; close all [x, y]=meshgrid (-10: 0. 7: 10, -10: 0. 7: 10); r=sqrt(x. ^2+y. ^2); a=atan(x. /y); d=max(a))-min(a)); % obliczenie wartości funkcji z=cos(r-a*2*pi/d)*0. 1+0. 02*r; % rysowanie wykresu surfc(x, y, z) MATLAB (funkcje graficzne) 49
Kreślenie powierzchni – funkcja surfc() surfc(x, y , z, c) surfc(x, y, z) surfc(z, c) surfc(z) MATLAB (funkcje graficzne) rysuje powierzchnię identyczna jak funkcja surf i umieszcza pod nią wykres poziomicowy 50
Kreślenie powierzchni – funkcja surfl() • rysuje powierzchnię (jak funkcja surf ) surfl(x, y , z, s, k) z uwzględnieniem odbić światła; surfl(x, y, z) • wektor s określa kierunek oświetlenia; • kolejne elementy wektora k : natężenie surfl(z, s, k) światła, wsp. rozproszenia, wsp. odbicia, surfl(z) wsp. rozproszenia światła odbitego clc; clear all; close all [x, y]=meshgrid (-10: 0. 7: 10, -10: 0. 7: 10); r=sqrt(x. ^2+y. ^2); a=atan(x. /y); d=max(a))-min(a)); z=cos(r-a*2*pi/d)*0. 1+0. 02*r; subplot(1, 2, 1); surfl(x, y, z, [45, 0], [1, 0. 8, 0. 2, 1]); subplot(1, 2, 2); surfl(x, y, z, [0, 45], [1, 0. 8, 0. 2, 1]); MATLAB (funkcje graficzne) 51
Kreślenie powierzchni – funkcja surfl() surfl(x, y , z, c) surfl(x, y, z) surfl(z, c) surfl(z) MATLAB (funkcje graficzne) • rysuje powierzchnię (jak funkcja surf ) z uwzględnieniem odbić światła; • wektor s określa kierunek oświetlenia; • kolejne elementy wektora k : natężenie światła, wsp. rozproszenia, wsp. odbicia, wsp. rozproszenia światła odbitego 52
Kreślenie powierzchni – funkcja waterfall() waterfall(x, y, z, c) waterfall(x, y, z) waterfall(z, c) waterfall(z) rysuje wykres powierzchnię zbliżony do funkcji meshz z tym, że nie są rysowane linie odpowiadające kolejnym kolumnom macierzy [x, y]=meshgrid(-2*pi: 0. 2: 2*pi, -2*pi: 0. 2: 2*pi); z=sin(x). *cos(y); waterfall(x, y, z) MATLAB (funkcje graficzne) 53
Kreślenie powierzchni – funkcja plot 3() plot 3(x, y, z, s) plot 3(x 1, y 1, z 1, s 1, x 2, y 2, s 2, . . ) • trójwymiarowe rozwinięcie funkcji plot; • rysuje linię łamaną łączącą punkty o współrzędnych określonych elementami wektorów x, y, z; • parametr s określa kolor i typ linii x=rand(10); y=rand(10); z=rand(10); plot 3(x, y, z) grid on MATLAB (funkcje graficzne) 54
Kreślenie powierzchni – funkcja comet 3() comet 3(z) comet 3(x, y, z, p) • trójwymiarowe rozwinięcie funkcji comet ; • parametr p (od 0 do 1) określa długość „ogona komety” a=0: 0. 01: 2*pi; x=sin(a); y=cos(a); z=sin(6. *a); comet 3(x, y, z, 0. 5) grid on; hold on; comet 3(x, y, z, 0. 5) MATLAB (funkcje graficzne) 55
Kreślenie powierzchni – funkcja cylinder() cylinder(r, n) cylinder(r) [x, y, z]=cylinder(r, n) rysuje figurę powstałą przez obrót krzywej opisanej wektorem r wokół osi z; n określa liczbę punktów na obwodzie figury (domyślnie 20) r=sin(-pi/2: 0. 2: pi); cylinder(r, 50) MATLAB (funkcje graficzne) 56
Kreślenie powierzchni – funkcja sphere() sphere(n) sphere [x, y, z]=sphere(r, n) • rysuje składaną z czworokątów sferę; • parametr n określa liczbę „południków” i równoleżników sfery (domyślnie 20) [x, y, z] = sphere; surf(x, y, z) hold on [x, y, z] = sphere(40); surf(x+2, y-2, z) axis equal MATLAB (funkcje graficzne) 57
Kreślenie powierzchni – funkcja fill 3() fill 3(x, y, z, c) fill 3(x 1, y 1, z 1, c 1, x 2, y 2, z 2, c 2, . . . ) rysuje wielokąt (wielokąty) o wierzchołkach określonych przez elementy wektorów x, y, z i wypełnia kolorem określanym parametrem c x=sin(0: pi/4: 2*pi); y=cos(0: pi/4: 2*pi); z 1=zeros(1, length(x)); z 2=z 1+1; fill 3(x, y, z 1, 'g', x, y, z 2, 'c') grid on MATLAB (funkcje graficzne) 58
Wykresy poziomicowe – funkcja contour() contour(z) contour(x, y, z, n) contour(z, v) contour(x, y, z, v) contour(. . , s) rysuje wykres poziomicowy elementów macierzy z lub powierzchni definiowanej punktami o współrzędnych x, y i z; n – określa liczbę poziomnic; elementy wektora v określają położenie poziomnic; s – rodzaj i kolor linii [x, y]=meshgrid (-10: 0. 7: 10, -10: 0. 7: 10); r=sqrt(x. ^2+y. ^2); a=atan(x. /y); d=max(a))-min(a)); % obliczenie wartości funkcji z=cos(r-a*2*pi/d)*0. 1+0. 02*r; % rysowanie wykresu contour(x, y, z, 20); grid on MATLAB (funkcje graficzne) 59
Wykresy poziomicowe – funkcja contour() contour(z) contour(x, y, z, n) contour(z, v) contour(x, y, z, v) contour(. . , s) MATLAB (funkcje graficzne) rysuje wykres poziomicowy elementów macierzy z lub powierzchni definiowanej punktami o współrzędnych x, y i z; n – określa liczbę poziomnic; elementy wektora v określają położenie poziomnic; s – rodzaj i kolor linii 60
Wykresy poziomicowe – funkcja contour 3() contour 3(z, n) contour 3(x, y, z, n) c=contour 3(. . . ) rysuje wykres poziomnicowy elementów macierzy z lub powierzchni definiowanej punktami o współrzędnych x, y i z; n – określa liczbę poziomic; c – zwracany wektor poziomic [x, y]=meshgrid(-1: 0. 2: 1); z=exp(-(x-1). ^2 -y. ^2)… +exp(-(x+1). ^2 -y^2); contour 3(x, y, z, 20); grid on MATLAB (funkcje graficzne) 61
Wykresy poziomicowe – funkcja clabel() clabel(c, v) clabel(c, ’manual’ ) wypisuje obok każdej poziomnicy odpowiadającą jej wysokość; c – to macierz poziomnic; v – wektor opisywanych wysokości; manual’– opis w trybie interakcyjnym [x, y]=meshgrid(-1: 0. 2: 1); z=exp(-(x-1). ^2 -y. ^2)… +exp(-(x+1). ^2 -y^2); contour(x, y, z, 10); c=contour(x, y, z, 10); clabel(c) MATLAB (funkcje graficzne) 62
Funkcja pcolor() pcolor(z) rysuje pseudokolorowy „szachownicowy” wykres wartości elementów macierzy z z=randn(50); pcolor(z); MATLAB (funkcje graficzne) 63
Funkcja quiver() quiver(x, y, u, v) quiver(. . . , s) rysuje wektory o współrzędnych opisanych przez wektory u i v, zaczepione w punktach określonych wektorami x i y [x, y]=meshgrid(-4: 0. 4: 4); z=-1. /sqrt((x-2. 2). ^2+y. ^2)-1. /sqrt((x+2. 2). ^2+y. ^2); [px, py]=gradient(z); quiver(x, y, px, py) MATLAB (funkcje graficzne) 64
Wykres funkcji trzech zmiennych slice() rysuje przekroje poziome, pionowe slice(x, y, z, v, xi, yi, zi) i poprzeczne w płaszczyznach wyznaczonych przez elementy macierzy slice(v, xi, yi, zi) xi, yi i zi oraz oznacza kolorem kolejne wartości elementów macierzy v % Przygotowanie siatki wykresu [x, y, z]=meshgrid(-2: 0. 2: 2, -2: 0. 2: 2); % Obliczenie wartości funkcji v=(1. /((x-2). ^2+(y+2). ^2+z. ^2)+1. /((x+2). ^2+(y-2). ^2+z. ^2)… +4. /(x. ^2+y. ^2+z. ^2)); % Rysowanie funkcji slice(x, y, z, v, [0 2], [-2 0]) % Określenie zakresu skali kolorów caxis([0 2]) MATLAB (funkcje graficzne) 65
Wykres funkcji trzech zmiennych slice() MATLAB (funkcje graficzne) 66
Manipulowanie wykresami – funkcja view() zmienia kierunek z którego oglądany jest view(az, el) aktywny rysunek: view([x, y, z]) • az i el – to azymut i kąt podniesienia; • x, y i z – współrzędne punktu obserwacji; view(2) • 2 – kierunek obserwacji przy oglądaniu view(3) rysunków dwuwymiarowych; • 3 - to kierunek standardowy az=-37. 5, el=30 [x, y]=meshgrid(-4: 0. 4: 4); z=(x. ^3+y. ^3). *sin(x+y); subplot(2, 2, 1); mesh(x, y, z); subplot(2, 2, 2); mesh(x, y, z); subplot(2, 2, 3); mesh(x, y, z); subplot(2, 2, 4); mesh(x, y, z); MATLAB (funkcje graficzne) view(45, 45); view([-10, -5, 5]); view(2); view(3); 67
Manipulowanie wykresami – funkcja view() MATLAB (funkcje graficzne) 68
Manipulowanie wykresami – funkcja hidden on hidden off hidden zmienia tryb wyświetlania wykresów funkcjami mesh, meshc i meshz; stan on włącza przysłanianie niewidocznych fragmentów wykresu off nie usuwa zasłoniętych linii. [x, y]=meshgrid(-4: 0. 4: 4); z=(x. ^3+y. ^3). *sin(x+y); subplot(1, 2, 1); mesh(x, y, z); hidden off; subplot(1, 2, 2); mesh(x, y, z); hidden on; MATLAB (funkcje graficzne) 69
Manipulowanie wykresami – funkcja shading zmienia sposób kolorowania obiektów typu surface i patch: • flat – każdy z elementów płata rysowane są kolorem związanym z elementem o shading flat najniższym indeksie; shading interp • interp – kolor ustalany metodą shading faceted interpolowania punktów płata; S=shading • faceted – zachowuje czarny kolor linii odgraniczającej poszczególne płaty; • wywołanie bez parametrów zwraca nazwę aktualnego trybu kolorowania subplot(3, 1, 1); sphere(20); axis square; shading flat subplot(3, 1, 2); sphere(20); axis square; shading faceted subplot(3, 1, 3); sphere(20); axis square; shading interp MATLAB (funkcje graficzne) 70
Manipulowanie wykresami – funkcja shading subplot(2, 2, 1); sphere(20); axis square; shading flat subplot(2, 2, 2); sphere(20); axis square; shading faceted subplot(2, 2, 3); sphere(20); axis square; shading interp MATLAB (funkcje graficzne) 71
Manipulowanie wykresami – funkcja colormap m=colormap(m) odczytuje lub zmienia mapę kolorów przypisanych wykresowi; • użytkownik może zdefiniować własną mapę lub też wykorzystać jedną z gotowych: hsv, gray, hot, cool, bone, copper, pink, prism, jet, flag; • przywrócenie standardowej mapy nastąpi po wywołaniu funkcji z parametrem domyślnym default [x, y]=meshgrid(-4: 0. 4: 4); z=(x. ^3+y. ^3). *sin(x+y); figure(1); surf(x, y, z); shading interp; colormap('jet'); colorbar figure(2); surf(x, y, z); shading interp; colormap('gray'); figure(3); surf(x, y, z); shading interp; colormap('pink'); figure(4); surf(x, y, z); shading interp; colormap('hsv'); MATLAB (funkcje graficzne) 72
Manipulowanie wykresami – funkcja colormap MATLAB (funkcje graficzne) 73
- Slides: 73