350 likes | 750 Views
MATLAB. PROJEKTOWANIE GRAFICZNE. 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.
E N D
MATLAB PROJEKTOWANIE GRAFICZNE
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.
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 rysunku.
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.
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 – wyłącza/włącza tryb czyszczenie okien; • ishold – sprawdza stan przełącznika hold; • axis – zmiana wyglądu osi.
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).
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.
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.
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), siatek (mesh), powierzchni (surf) oraz wykresów konturowych (contour). • Aby uzyskać w Matlabie pomoc na temat funkcji 3D należy w oknie komend wydać komendę help graph3d.
Funkcja plot3 • Polecenie plot3(x,y,z,s) generuje trójwymiarową krzywą złożoną z punktów (xi, yi, zi), 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.
Ćw.1 Wykonaj wykres funkcji r(t)=< t*cos(t), t*sin(t), t >, t=-10*pi:pi/100:10*pi. Podpisz osie, włącz siatkę.
Funkcja meshgrid • Powierzchnia rysowana jest w Matlabie jako wykres funkcji z=f(x,y), przy czym współrzędne punktów (xi,yi) 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.
[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).
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). • 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.
Ćw.2 Utwórz wykres paraboloidy hiperbolicznej z=y2-x2 w przedziałach x=-1:0.05:1, y=-1:0.05:1. Wyłącz układ współrzędnych, dodaj wykres konturowy.
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 kierunek, z którego pada światło, k-określa współczynniki odbicia i rozproszenia. • waterfall(x,y,z,c) –działa jak meshz, ale nie rysuje linii odpowiadających kolumnom macierzy.
Ćw.3 Napisz skrypt, który rysuje wykresy funkcji: f(x,y)=exp(-(x-1).^2+y.^2)+exp(-(x+1).^2-y.^2) dla x,y=-3:0.3:3, w jednym oknie graficznym za pomocą poleceń surf i waterfall.
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.
Animacja %skrypt film 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')
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
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)
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.