MATLAB PROJEKTOWANIE GRAFICZNE Maciej Ulman ETI 9.2 Funkcje graficzne moŝna podzielić na cztery podstawowe grupy: przeznaczone do tworzenia wykresów dwu- i trójwymiarowych, prezentujące wykresy ciągłe i dyskretne, umoŝliwiające tworzenie grafiki wektorowej i rastrowej, wysokiego i niskiego poziomu. 2 1
OKNA GRAFICZNE Funkcja figure figure(n) close close(n) close all clf Opis tworzy nowe okno graficzne i uaktywnia je uaktywnia okno o nr n lub tworzy nowe i daje mu nr n zamyka okno aktywne zamyka okno o nr n zamyka wszystkie okna usuwa zawartość aktywnego okna 3 Funkcja subplot Funkcja ta umoŝliwia umieszczanie wielu rysunków w jednym oknie. Dzieli ona okno na mniejsze prostokątne okienka, w których moŝna narysować odrębne wykresy. subplot(m,n,p) dzieli okno graficzne na mxn okienek oraz uaktywnia okno p.. okienka są numerowane od lewej do prawej, wierszami od góry do dołu. subplot( Position,[lewy dolny szerokość wysokość]) tworzy w obrębie aktywnego rysunku nowe prostokątne okienko o podanym połoŝeniu i wymiarach. PołoŜenie jest podawane względem lewego dolnego rogu rysunku. Parametry szerokość=wysokość=1 oznaczają układ o rozmiarach 4 rysunku. 2
Grafika dwuwymiarowa Polecenie plot(x,y) plot(y) plot(x,y,s) plot(x1,y1,x2,y2,...) plot(x1,y1,s1,x2,y2,s2,..) Opis rysuje wykres elem.wektora y wzgl.elem.wektora x; rysuje wykres elem.wektora y, przyjmując x=1:length(y); rysyje wykres y(x) z określeniem dokładnego wyglądu linii; s-łańcuch s zawierający kody; rysuje w jednym oknie wiele wykresów: y1(x1), y2(x2),... rysuje w jednym oknie wiele wykresów z określeniem dokładnego wyglądu linii kaŝdego z nich. 5 Znaki Rodzaj linii - ciągła (domyślna) - - kreskowana : kropkowana -. kreska-kropka kropka 6 3
Znaki y m c r g b w k Kolor linii Ŝółty karmazynowy turkusowy czerwony zielony niebieski biały czarny 7 Znaki + *. o x s d p h v ^ < > Oznaczenia punktów krzyŝyk gwiazdka kropka kółko iks kwadrat romb gwiazdka pięcioramienna gwiazdka sześcioramienna trójkąt skierowany do dołu trójkąt skierowany do góry trójkąt skierowany w lewo trójkąt skierowany w prawo 8 4
Funkcja linspace Funkcja ta pomaga w tworzeniu danych do wykresu. linspace(x1,x2,n) generuje wierszowy wektor N liczb rozłoŝonych równomiernie w przedziale od x1 do x2. linspace(x1,x2) generuje domyślnie 100 liczb z przedziału x1 do x2. 9 Funkcje opisujące wykresy Funkcja xlabel(tekst) ylabel(tekst) title(tekst) text(x,y,tekst) legend(s1,s2,..) grid on/off off Opis wyświetla łańcuch znaków tekst jako opis osi x aktywnego wykresu wyświetla łańcuch znaków tekst jako opis osi y aktywnego wykresu wyświetla łańcuch znaków tekst jako tytuł aktywnego wykresu wyświetla łańcuch znaków tekst w miejscu określonym przez współrzędne x,y wyświetla legendę; łańcuch znaków s1 jest opisem odnoszącym się do pierwszego wykresu,s2- drugiego,... włącza/wyłącza wyświetlanie pomocniczej siatki współrzędnych 10 5
Funkcja hold Wyświetlanie wykresu w oknie graficznym powoduje jednoczesne wyczyszczenie okna i usunięcie poprzedniego rysunku. Dodanie wykresu do znajdującego się w oknie umoŝliwia funkcja hold. hold on/off off wyłącza/włącza tryb czyszczenie okien; ishold sprawdza stan przełącznika hold; axis zmiana wyglądu osi. 11 Polecenie axis([xmin xmax ymin ymax]) axis auto axis manual axis ij axis xy axis equal Opis ustawia zakres osi x i y włącza tryb automatycznego ustawiania zakresu osi włącza tryb autom.ustawienia zakresu osi; po włączeniu przełącznika hold wszystkie kolejne wykresy będą rysowane w takim samym układzie współrzędnych zmienia układ współ.na macierzowy zmienia układ współ.na kartezjański zmienia skalowanie osi tak, aby jednostka na podziałce miała ten sam 12 rozmiar na wszystkich osiach 6
axis image axis square zmienia rozmiary osi na takie same, jak rozmiary wykresu ustawia jednakowy rozmiar wszystkich osi axis normal przywraca standardowe ustawienia rozmiaru osi axis off ukrywa osie wraz z ich opisem axis on przywraca wyświetlanie osi [s1,s2,s3]=axis( stat e ) v=axis zwraca aktualne ustawienia układu:s1-auto auto lub manual,, s2-on lub off,s3-xy lub ij zwraca wektor wierszowy v=[xmin xmax ymin ymax] 13 Funkcja fplot Z tej funkcji korzystamy w celu narysowania moŝliwie najbardziej precyzyjnego wykresu funkcji. fplot(f,[x0,xk]) f-łańcuch znaków zawierających nazwę funkcji; x0,xk-początek i koniec przedziału rysowania funkcji; [x,y]=fplot(...) nie powoduje narysowania wykresu, tylko zwraca wektor argumentów x i wektor wartości funkcji y. Wykres uzyskanych danych moŝna narysować za pomocą polecenia plot(x,y). 14 7
Wykresy w skali logarytmicznej Funkcja Opis loglog(x,y,s) semilogx(x,y,s) rysuje wykres, uŝywając skal logarytmicznych na obu osiach...tylko na osi x semilogy(x,y,s)...tylko na osi y 15 Funkcja logspace Pomaga w przygotowywaniu wykresów w skali logarytmicznej. Generuje wektor wierszowy N liczb, rozmieszczonych logarytmicznie między wartościami 10^x1 a 10^x2: logspace(x1,x2,n). Wywołanie funkcji bez argumentu N spowoduje wygenerowanie wierszowego wektora 50 liczb. 16 8
Funkcja polar Funkcja ta słuŝy do rysowania wykresów w biegunowym układzie współrzędnych: polar(theta,r,s); theta wektor kątów (w radianach) dla poszczególnych punktów; r wektor odległości poszczególnych punktów od początku układu współrzędnych. Opcjonalnym argumentem funkcji jest łańcuch znaków s, określający wygląd rysowanej linii, jak przy funkcji plot. 17 Funkcje rysujące wykresy danych zespolonych Funkcja plot(z,s) compass(z,s) compass(x,y,s) Opis jeŝeli z jest macierzą o elementach zespolonych, to zostanie narysowany wykres Im(z)=f(Re(z)); )); równowaŝne polecenie: plot(real(z),imag(z),s) rysuje wykres, na którym elementy macierzy zespolonej z są przedstawione w postaci strzałek o wspólnym początku i grotach w punktach opisanych przez współrzędne x=real(z), y=imag(z); x i y są współrzędnymi kartezjańskimi, wykres jest rysowany w biegunowym układzie współrzędnych 18 9
feather(z,s) feather(x,y,s) rysuje wykres, na którym elementy macierzy zespolonej z są przedstawione w postaci strzałek o początkach rozmieszczonych równomiernie na osi x; długości strzałek są równe modułom elementów macierzy z, a kąty nachylenia strzałek ich argumentom. 19 GRAFIKA TRÓJWYMIAROWA Matlab zawiera duŝą liczbę wbudowanych funkcji słuŝących do wizualizacji obiektów trójwymiarowych. Zapoznamy się min. z potrzebnymi do tworzenia wykresów krzywych przestrzennych (plot3( plot3), siatek (mesh), powierzchni (surf( surf) ) oraz wykresów konturowych (contour( contour). Aby uzyskać w Matlabie pomoc na temat funkcji 3D naleŝy w oknie komend wydać komendę help graph3d. 20 10
Funkcja plot3 Polecenie plot3(x,y,z,s) generuje trójwymiarową krzywą złoŝoną z punktów (x i, y i, z i ), których współrzędne zostały określone w wektorach x, y, z. Wektory muszą być tej samej długości. Funkcja ta jest odpowiednikiem funkcji plot w grafice dwuwymiarowej. 21 Funkcja meshgrid Powierzchnia rysowana jest w Matlabie jako wykres funkcji z=f(x,y), przy czym współrzędne punktów (x( i,y i ) określone są za pomocą wektorów X i Y, gdzie indeksy ij przyjmują wartości i=1:length(x), j=1:length(y). PoniewaŜ tworzymy wykres trójwymiarowy na dwuwymiarowej płaszczyźnie ekranu, na początek naleŝy wygenerować specjalną siatkę na płaszczyźnie XY w tych węzłach, w których szukane są wartości funkcji w osi z. SłuŜy do tego funkcja meshgrid. 22 11
[x,y]=meshgrid(x,y) transformuje obszar opisany przez wektory X i Y (z przestrzeni 3D) na dwie macierze x oraz y we współrzędnych ekranowych 2D. [x,y]=meshgrid(x) jest równowaŝne wywołaniu meshgrid(x,x). 23 Funkcja mesh mesh(x,y,z,c) rysuje powierzchnię opisaną macierzami x,y,z w postaci kolorowej siatki o polach wypełnionych kolorem tła; elementy macierzy c określają kolory linii poszczególnych pól. mesh(x,y,z)-rysuje powierzchnię, przyjmując c=z. mesh(z,c)-rysuje wykres wartości elementów macierzy z, przyjmując x=1:n, y=1:m, gdzie [m,n]=size(z[ m,n]=size(z). meshc(x,y,z,c)-rysuje siatkę identyczną jak funkcja mesh i umieszcza pod nią wykres poziomicowy. meshz(x,y,z,c)-działa jak mesh,, ale dodatkowo w dół od krawędzi wykresu rysowane są linie określające płaszczyzny odniesienia. 24 12
Funkcja surf, waterfall surf(x,y,z,c) rysuje róŝnokolorową powierzchnię opisaną macierzami x,y,z. surf(x,y,z) rysuje powierzchnię, przyjmując c=z. surf(z,c) rysuje powierzchnię, przyjmując x=1:n, y=1:m, gdzie [x,y]=size(z). surfc(x,y,z,c) łączy działanie funkcji surf i contour. surfl(x,y,z,s,k) rysuje powierzchnię z uwzględnieniem odbić światła; s-określa s kierunek, z którego pada światło, k-określa k współczynniki odbicia i rozproszenia. waterfall(x,y,z,c) działa jak meshz,, ale nie rysuje linii odpowiadających kolumnom macierzy. 25 Mapy kolorów Mapa kolorów jest macierzą trójkolumnową, której elementami są liczby rzeczywiste z zakresu 0,0-1,0. KaŜdy wiersz macierzy jest wektorem RGB definiującym dany kolor za pomocą intensywności trzech podstawowych kolorów:czerwonego, zielonego i niebieskiego. Funkcja colormap pozwala odczytać lub zmienić mapę kolorów przypisaną aktywnemu rysunkowi. m=colormap zwraca aktualną mapę kolorów m. colormap(m) zmiana aktualnej mapy kolorów na mapę m. colormap( default ) przywraca standardową mapę kolorów. 26 13
Mapa gray hot cool autumn summer Opis mapa odcieni szarości mapa kolorów ciepłych od czarnego, poprzez odcienie czerwonego, pomarańczowego i Ŝółtego, aŝ do białego mapa kolorów zimnych od turkusowego do karmazynowego mapa kolorów zmieniających się od czerwonego, przez pomarańczowy, do Ŝółtego mapa odcieni kolorów Ŝółtego i zielonego hsv standardowa mapa kolorów w systemie HSV; kaŝdy wiersz macierzy zawiera 3 liczby z zakresu od 0 do 1 opisujące odcień, nasycenie i jaskrawość 27 %skrypt film m=moviein(5); Animacja m=moviein(5); %w macierzy m będzie przechowywanych 5 klatek animacji x=0:pi/100:pi; for i=1:5 h1_line=plot(x,sin(i*x)); set(h1_line,'linewidth',1.5,'color','m') grid title('funkcja sinus sin(kx), k=1,2,3,4,5') h=get(gca,'title'); '); set(h,'fontsize',12) xlabel('x') ') 28 14
k=num2str(i); if i>1 s=['sin(',k,'x)']; else s='sin(x)'; end ylabel(s) h=get(gca,'ylabel'); '); set(h,'fontsize',12) m(:,i)=getframe; %kaŝda klatka jest zapisywana w pojedynczej kolumnie macierzy m pause(2) end movie(m) %odgrywa zapamiętane w macierzy m klatki animacji na ekranie 29 Funkcje shpere i cylinder sphere(n) tworzy kulę o promieniu 1 oraz środku w początku układu współrzędnych z wykorzystaniem 2(n+1) punktów siatki tworzącej jej powierzchnię. Dodanie polecenia: surf(x+2,y-1,z+1) utworzy wykres kuli o promieniu 1 ze środkiem w punkcie (2,-1,1) 30 15
Funkcja cylinder jest wykorzystywana do tworzenia wykresów powierzchni obrotowych. Pobiera ona dwa opcjonalne parametry wejściowe. W komendzie cylinder(r,n) parametr r oznacza wektor, który definiuje promienie walca w kolejnych punktach wzdłuŝ osi z, a n oznacza liczbę punktów siatki na obwodzie walca. Wartości domyślne dla tych parametrów to r =[1 1] oraz n=20. Komenda: cylinder([1 0]) tworzy stoŝek o wysokości i promieniu podstawy równym 1. 31 16