MATLAB
PROJEKTOWANIE
GRAFICZNE
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.
3
OKNA GRAFICZNE
Funkcja
Opis
figure
tworzy nowe okno
graficzne i
uaktywnia je
figure(n)
uaktywnia okno o
nr n lub tworzy
nowe i daje mu nr n
close
zamyka okno
aktywne
close(n)
zamyka okno o nr n
close all
zamyka wszystkie
okna
clf
usuwa zawartość
aktywnego okna
4
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
m
x
n
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.
5
Grafika dwuwymiarowa
Polecenie
Opis
plot(x,y)
rysuje wykres elem.wektora y
wzgl.elem.wektora x;
plot(y)
rysuje wykres elem.wektora y,
przyjmując x=1:length(y);
plot(x,y,s)
rysyje wykres y(x) z
określeniem dokładnego
wyglądu linii; s-łańcuch
zawierający kody;
plot(x1,y1,x2,y2,...)
rysuje w jednym oknie wiele
wykresów: y1(x1), y2(x2),...
plot(x1,y1,s1,x2,y2,s
2,..)
rysuje w jednym oknie wiele
wykresów z określeniem
dokładnego wyglądu linii
każdego z nich.
6
Znaki
Rodzaj linii
‘-’
ciągła (domyślna)
‘- -’
kreskowana
‘:’
kropkowana
‘-.’
kreska-kropka
7
Znaki
Kolor linii
‘y’
żółty
‘m’
karmazynowy
‘c’
turkusowy
‘r’
czerwony
‘g’
zielony
‘b’
niebieski
‘w’
biały
‘k’
czarny
8
Znaki
Oznaczenia punktów
‘+’
krzyżyk
‘*’
gwiazdka
‘.’
kropka
‘o’
kółko
‘x’
iks
‘s’
kwadrat
‘d’
romb
‘p’
gwiazdka pięcioramienna
‘h’
gwiazdka sześcioramienna
‘v’
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
9
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
.
10
Funkcje opisujące wykresy
Funkcja
Opis
xlabel(tekst)
wyświetla łańcuch znaków tekst jako
opis osi x aktywnego wykresu
ylabel(tekst)
wyświetla łańcuch znaków tekst jako
opis osi y aktywnego wykresu
title(tekst)
wyświetla łańcuch znaków tekst jako
tytuł aktywnego wykresu
text(x,y,tekst
)
wyświetla łańcuch znaków tekst w
miejscu określonym przez współrzędne
x,y
legend(s1,s2,
..)
wyświetla legendę; łańcuch znaków
s1 jest opisem odnoszącym się do
pierwszego wykresu,s2-drugiego,...
grid on/of
włącza/wyłącza wyświetlanie
pomocniczej siatki współrzędnych
11
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/of
– wyłącza/włącza tryb
czyszczenie okien;
ishold
– sprawdza stan przełącznika hold;
axis
– zmiana wyglądu osi.
12
Polecenie
Opis
axis([xmin xmax ymin
ymax])
ustawia zakres osi x i y
axis auto
włącza tryb automatycznego
ustawiania zakresu osi
axis manual
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
axis ij
zmienia układ współ.na
macierzowy
axis xy
zmienia układ współ.na
kartezjański
axis equal
zmienia skalowanie osi tak, aby
jednostka na podziałce miała ten
sam rozmiar na wszystkich osiach
13
axis image
zmienia rozmiary osi na takie same, jak
rozmiary wykresu
axis square
ustawia jednakowy rozmiar wszystkich
osi
axis normal
przywraca standardowe ustawienia
rozmiaru osi
axis of
ukrywa osie wraz z ich opisem
axis on
przywraca wyświetlanie osi
[s1,s2,s3]=axis(‘sta
te’)
zwraca aktualne ustawienia układu:s1-
auto lub manual, s2-on lub of,s3-xy lub
ij
v=axis
zwraca wektor wierszowy v=[xmin
xmax ymin ymax]
14
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).
15
Wykresy w skali logarytmicznej
Funkcja
Opis
loglog(x,y,s) rysuje wykres, używając skal
logarytmicznych na obu
osiach
semilogx(x,y,
s)
...tylko na osi x
semilogy(x,y,
s)
...tylko na osi y
16
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.
17
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.
18
Funkcje rysujące wykresy danych
zespolonych
Funkcja
Opis
plot(z,s)
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)
compass(z,s)
compass(x,y,
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
19
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.
20
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
.
21
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.
22
• Ć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ę.
23
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.
24
[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).
25
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.
26
Ćw.2
Utwórz wykres paraboloidy
hiperbolicznej z=y
2
-x
2
w
przedziałach x=-1:0.05:1,
y=-1:0.05:1.
Wyłącz układ współrzędnych, dodaj
wykres konturowy.
27
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.
28
Ć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.
29
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.
30
Mapa
Opis
gray
mapa odcieni szarości
hot
mapa kolorów ciepłych – od czarnego,
poprzez odcienie czerwonego,
pomarańczowego i żółtego, aż do białego
cool
mapa kolorów zimnych – od turkusowego do
karmazynowego
autumn
mapa kolorów zmieniających się od
czerwonego, przez pomarańczowy, do żółtego
summe
r
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ść
31
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')
32
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
33
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)
34
• 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.