Instrukcja

Transkrypt

Instrukcja
Katedra Elektrotechniki Teoretycznej i Informatyki
Przedmiot: Zintegrowane Pakiety Obliczeniowe W
Zastosowaniach InŜynierskich
Numer ćwiczenia:
4
Temat: Wizualizacja rozkładów jedno i
wielowymiarowych, graficzny interfejs.
Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami wykreślającymi wykresy oraz
tworzącymi okna komunikacyjne (dialog box).
Podstawy teoretyczne
MATLAB GRAPHIC - WYKRESY 2D
1
1
0.1
1
0.8
0.8
0.6
0.6
0.5
0.05
0.4
0.4
0.2
0.2
0
0
0
-0.2
-0.4
-0.4
-0.5
-0.05
-0.6
-0.6
-0.8
-1
-0.8
0
1
2
3
4
5
6
7
-1
8
x=0:0.05:8;
y1=sin(x.^2);
y2=sin(x);
plot(x,y1, x,y2);
10
0
-0.2
0
1
2
3
4
5
6
7
-0.1
-1
0
1
2
3
4
5
6
7
8
9
10
% Tworzenie wykresu z dwiema % % Wykres schodkowy funkcji sin
osiami y z uŜyciem funkcji plot
x=0:0.25:10;
t = 0:pi/20:2*pi;
stairs(x,sin(x));
y1 = sin(t);
y2 = 0.5*sin(t-1.5);
plotyy(t,y1,t,y2,'plot')
50
0.35
1.5
0.3
10
1
40
0.25
0.2
0.5
10
30
0.15
0
10
0.1
20
0.05
-0.5
0
10
10
-0.05
-1
-0.1
10
0
10
-1
10
0
10
1
% Wykres logarytmiczny
x = logspace(-1,2);
loglog(x,exp(x),'-s');
grid on
10
2
-1.5
-2.5
-2
-1.5
-1
-0.5
0
0.5
% Wykres błędu
x=-2:0.1:2;
y=erf(x);
e = rand(size(x))/10;
errorbar(x,y,e);
1
1.5
2
2.5
-0.15
0
0.5
1
1.5
2
2.5
3
3.5
4
% Stem plot
x = 0:0.1:4;
y = sin(x.^2).*exp(-x);
stem(x,y)
1
10
90
10
0.5
120
60
11%
0.375
10
22%
8
0.25
150
30
0.125
10
6
180
10
10
10
0
4
33%
210
2
330
240
0
0
1
2
3
4
5
6
7
8
9
10
% Wykres półlogarytmiczny(y-log)
x = 0:.1:10;
semilogy(x,10.^x)
28%
6%
300
270
% Wykres biegunowy
t=0:.01:2*pi;
polar(t,abs(sin(2*t).*cos(2*t)));
x = [1 3 0.5 2.5 2];
explode = [0 1 0 0 0];
pie(x,explode)
% Wykres półlogarytmiczny(x-log)
x = 0:.1:10;
semilogx(10.^x,x)
25
1
5
0.9
20
0.8
4
0.7
15
0.6
3
0.5
10
0.4
2
0.3
5
0.2
1
0.1
0
0
-3
-2
-1
0
1
2
% Wykres słupkowy
dzwonowej
x = -2.9:0.2:2.9;
bar(x,exp(-x.*x));
1
3
2
3
4
5
0
funkcji Y = round(rand(5,3)*10);
bar(Y,'stack')
20
10
10
18
9
9
16
8
8
14
7
7
12
6
6
10
5
5
8
4
4
6
3
3
4
2
2
2
1
0
0
1
2
3
4
5
6
7
8
9
10
Y = round(rand(19,1)*10);
barh(Y)
5
10
15
25
1
0
1
2
3
4
0
5
Y = round(rand(5,3)*10);
bar(Y,1.5)
1
2
3
4
5
Y = round(rand(5,3)*10);
bar(Y,'group')
90
12
20
Y = round(rand(5,3)*10);
barh(Y,'stack')
2
6
120
60
1.5
4
10
150
1
30
2
8
0.5
6
0
180
0
-0.5
4
-1
210
330
2
-1.5
0
1
1.5
2
2.5
3
Y = [ 1, 5, 3; 3, 2, 7;
2, 6, 1];
area(Y);
grid on
3.5
4
-2
240
0
2
4
6
8
10
12
14
16
18
1, 5, 3;... theta = (-90:10:90)*pi/180;
r = 2*ones(size(theta));
[u,v] = pol2cart(theta,r);
feather(u,v);
90
1
60
3.1227
0.8
2.0818
150
22%
270
theta=2*pi*rand(1,50;
rose(theta)
4.1635
120
300
20
0.6
30
0.4
11%
1.0409
0.2
28%
180
33%
0
0
-0.2
6%
-0.4
210
330
-0.6
-0.8
240
300
270
-1
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2
x = [1 3 0.5 2.5 2];
explode=[0 1 0 0 0];
pie3(x,explode);
Z = eig(randn(20,20));
compass(Z)
% plot a function
fplot('tanh',[-2 2])
3
Funkcja
Zastosowanie
Składnia
Opis
Przykłady
hold
Zatrzymuje
bierzący wykres
w okienku
hold on
hold off
hold
subplot
Tworzy i
kontroluje
wykresy o wielu
osiach
subplot(m,n,p)
plot
Liniowy wykres
2-D
plot(Y)
plot(X1,Y1,...)
plot(X1,Y1,LineSpec,...)
grid
Rysuje linie
siatki dla
wykresów 2-D I
3-D
grid on
grid off
grid
Funkcja hold określa czy nowo rysowany wykres
zostanie dodany do bieŜącego wykresu, czy go
zastąpi.
hold on zatrzymuje bieŜący wykres i pewne
właściwości osi tak Ŝe następne polecenia rysowania
dodają kolejne wykresy do bieŜącego.
Subplot dzieli bieŜące okienko wykresu na
kwadratowe obszary, które są numerowane rzędami.
KaŜdy obszar zawiera osie.
subplot(m,n,p) tworzy osie w p-tym obszarze
okienka podzielonego na m-na-n kwadratowych
obszarów. Nowe osie stają się osiami bieŜącymi.
plot(Y) wykreśla kolejne wartości w kolumnach Y.
Jeśli Y jest macierzą zespoloną plot(Y) is
równowaŜne do plot(real(Y),imag(Y)). We
wszystkich innych przypadkach uŜycia plot, część
urojona jest ignorowana.
plot(X1,Y1,...) wykreśla wszystkie linie
zdefiniowane parami (Xn, Yn). Jeśli tylko Xn lub Yn
jest macierzą, wektor jest rysowany w odniesieniu do
rzędów lub kolumn macierzy, w zaleŜności od tego
który wymiar macierzy zgadza się z wymiarem
wektora. plot(X1,Y1,LineSpec,...) wykreśla
wszystkie linie zdefiniowane przez trójki
Xn,Yn,LineSpec triples, gdzie LineSpec jest
specyfikacją linii określającą jej typ, marker, kolor
itp.
Funkcja grid włącza i wyłącza linie siatki dla
bieŜących osi.
grid on dodaje siatką dla bieŜących osi.
grid off usuwa siatkę dla bieŜących osi.
grid przełącza stan widoczności siatki.
income = [3.2 4.1 5.0 5.6];
outgo = [2.5 4.0 3.35 4.9];
subplot(2,1,1); plot(income)
subplot(2,1,2); plot(outgo)
plot(X,Y,'c+')
%rysuje wykres w kolorze cyan z
% markerem + w kaŜdym punkcie Xn,Yn
plot(X,Y,'r-',X,Y,'go')
%rysuje wykres czerwoną ciągłą linią
%łączącą punkty i zielonymi kółkami
%oznaczającymi lokalizację punktów
%danych
4
legend
Wyświetla
legendę osi
title
Dodaje opis do
bierzącej osi
xlabel,
ylabel,
zlabel
Opis osi x, y ,z
legend umieszcza legendę na wykresie. Legenda
pokazuje, dla kaŜdej linii na wykresie, typ linii,
markera i jej kolor obok opisu wprowadzonego przez
uŜytkownika. W przypadku wykreślania
wypełnionych przestrzeni, legenda zawiera kolor
ścianki. Po wyświetleniu legendy uŜytkownik moŜe
przesuwać ją po wykresie przy uŜyciu myszki.
•
pos = -1 umieszcza legendę poza obszarem
ograniczonym przez osie, po prawej stronie
•
pos = 0 umieszcza legendę w obszarze
ograniczonym przez osie zasłaniając
jak
najmniej punktów wykresu
•
pos = 1 umieszcza legendę w górnym-prawym
rogu obszaru wyznaczonego przez osie (wartość
domyślna).
•
pos = 2 umieszcza legendę w górnym-lewym
rogu obszaru wyznaczonego przez osie.
•
pos = umieszcza legendę w dolnym-lewym rogu
obszaru wyznaczonego przez osie.
•
pos = 4 umieszcza legendę w dolnym-prawym
rogu obszaru wyznaczonego przez osie.
•
pos = [XlowerLeft YlowerLeft] Jawne
określenie współrzędnych dla dolnej lewej
pozycji
legendy
w
znormalizowanych
współrzędnych.
title('string')
KaŜdy obiekt Axes moŜe posiadać jeden opis (tytuł).
title(fname)
Opis jest zlokalizowany pośrodku, powyŜej osi.
title(...,'PropertyName',PropertyValu title('string') wyświetla string pośrodku, powyŜej
e,...)
bieŜącej osi.
title(fname) wywołuje funkcję zwracającą łańcuch
tekstowy który jest wyświetlany pośrodku powyŜej
bieŜącej osi.
x = -pi:pi/20:pi;
plot(x,cos(x),'-r',x,sin(x),'-.b')
h=legend('cos','sin',0);
xlabel('string')
xlabel(fname)
xlabel(...,'PropertyName',PropertyV
alue,...)
xlabel(‘X [mm])
legend('string1','string2',...)
legend('off')
legend('string1','string2',...,pos)
ylabel(...)
zlabel(...)
KaŜdy obiekt Axes moŜe posiadać jeden opis dla osi
x, y, z. Opis pojawia się poniŜej odpowiedniej osi w
przypadku wykresu 2-D i obok lub poniŜej w
przypadku wykresu 3-D.
xlabel('string') opisuje oś x dla bieŜących osi.
xlabel(fname) wywołuje funkcję zwracającą łańcuch
tekstowy który jest wyświetlany pośrodku powyŜej
osi x dla bieŜącego układu osi.
xlabel(...,'PropertName',PropertyValue,...) określa
wartości (PropertyValue) dla danej własności
f = 70;
c = (f--32)/1.8;
title(['Temperature is ',num2str(c),'C'])
n = 3;
title(['Case number #',int2str(n)],...
'Color','y')
5
(PropertName) dla obiektu graficznego Text
utworzonego przez xlabel.
ylabel(...) and zlabel(...) opisuje osie x i y w
bieŜącym układzie osi
xlim,
ylim,
zlim
Ustawia limit
wartości dla osi
x, y, z
xlim
xlim([xmin xmax])
xlim('mode')
xlim('auto')
xlim('manual')
xlim(axes_handle,...)
same for ylim, and zlim
xlim bez argumentów zwraca indywidualne zakresy
dla bieŜących osi.
xlim([xmin xmax]) ustawia zakres wartości od xmin
do xmax dla bieŜącej osi
[x,y] = meshgrid([-1.75:.2:3.25]);
z = x.*exp(-x.^2-y.^2);
surf(x,y,z);
xlim([-1.75 3.25]);
ylim([-1.75 3.25]);
xlim('mode') zwraca bieŜący tryb: automatyczny lub
ręczny
xlim('auto') ustawia tryb ograniczania wartości na
automatyczny
xlim('manual') ustawia tryb ograniczania wartości na
ręczny
6
colormap
Ustawia bierzącą
mapę kolorów
Colormap(map)
Colormap('default')
cmap = colormap
load spine
Mapa kolorów jest m-na-3 macierzą liczb
rzeczywistych w zakresie pomiędzy 0.0 a 1.0. KaŜdy image (X)
rząd odpowiada wektorowi RGB definiującym jeden colormap bone
kolor. k-ty rząd definiuje k-ty kolor mapy kolorów,
gdzie map(k,:) = [r(k) g(k) b(k)]) określa
intensywność kolorów: czerwonego, zielonego i
niebieskiego.
colormap(map) ustawia macierz map jako mapę
kolorów. Jeśli jakaś wartość macierzy map jest poza
zakresem [0 1], MATLAB zwraca błąd: Colormap
must have values in [0,1].
colormap('default') ustawia domyślna mapę kolorów
cmap = colormap; zwraca bieŜącą mapę kolorów.
Wartości sa w zakresie [0 1].
Dostępne mapy kolorów:
autumn -Odcienie od czerwonego do Ŝółtego
bone
-Skala szarości z odcieniem niebieskiego
contrast -Skala szarości z polepszeniem kontrastu
obrazu
cool
-Odcienie od cyan do magenta
copper -Odcienie miedziane
flag
-Naprzemiennie czerwony, biały, niebieski
i czarny
gray
-Liniowa skala szarości
hot
-Czarno – czerwono – Ŝółto – biała mapa
kolorów
hsv
-Hue-saturation-value (HSV)
jet
-Odmiana HSV
lines
-Line color colormap
prism
-Kolory pryzmatowe (rozszczepienie
światła)
spring -Odcienie od magenta do Ŝółtego
summer -Odcienie od zielonego do Ŝółtego
winter -Odcienie niebieskiego i zielonego
7
rotate3d
Obracanie osi
przy uŜyciu
myszy
rotate3d
rotate3d on
rotate3d off
rotate3d on umoŜliwia interaktywne obracanie osi w
bieŜącym okienku przy uŜyciu myszy.
rotate3d off uniemoŜliwia interaktywne obracanie
osi w bieŜącym okienku przy uŜyciu myszy.
[x,y] = meshgrid([-1.75:.2:3.25]);
z = x.*exp(-x.^2-y.^2);
surf(x,y,z);
rotate3d on
rotate3d przełącza interaktywne obracanie osi w
bieŜącym okienku przy uŜyciu myszy.
view
Specyfikacja
połoŜenia
obserwatora
view(az,el)
view([az,el])
view([x,y,z])
view(2)
view(3)
Pozycja obserwatora (viewpoint) określa orientację
osi. UŜytkownik moŜe zdefiniować pozycję
obserwatora przez podanie współrzędnych w
przestrzeni 2-D lub poprzez podanie azymutu i
wysokości patrzenia.
view(az,el) i view([az,el]) ustawiają kąt patrzenia dla
wykresu 3-D. Azymut az, jest poziomą rotacją wokół
osi z mierzoną w stopniach od ujemnej osi y.
Wartości dodatnie liczone są zgodnie z obrotem
wskazówek zegara. el jest pionową wysokością
liczoną w stopniach. Wartości dodatnie odpowiadają
poruszaniu się powyŜej obiektu, ujemne poniŜej
obiektu.
view([x,y,z]) ustawia pozycję obserwatora o
współrzędnych x, y, i z.
view(2) ustawia domyślne współrzędne obserwatora
dla wykresu 2-D, az = 0, el = 90.
[x,y] = meshgrid([-1.75:.2:3.25]);
z = x.*exp(-x.^2-y.^2);
surf(x,y,z);
az = 0;
el = 90;
view(az, el);
view(3) ustawia domyślne współrzędne obserwatora
dla wykresu 3-D, az = --37.5, el = 30
8
clf
Czyści bierzące
okienko wykresu
clf
clf reset
clf usuwa wszystkie nieukryte obiekty graficzne z
bieŜącego okienka
clc
Czyści okienko
komend
Tworzy
podstawowy
obiekt graficzny
Figure (okienko
umoŜliwiające
wyświetlanie
innych obiektów
graficznych)
clc
clc czyści okienko komend
figurefigure('PropertyName',Propert
yValue,...)figure(h)h = figure(...)
figure tworzy obiekt graficzny Figure. Obiekt ten
stanowi odrębne okienko na ekranie umoŜliwiające
wyświetlanie grafiki
figure
scrsz = get(0,'ScreenSize');
figure('Position',[1 scrsz(4)/2 scrsz(3)/2
scrsz(4)/2])
figure Tworzy okienko o domyślnych parametrach.
figure('PropertyName',PropertyValue,...) tworzy
nowy obiekt Figure przy uŜyciu określonych przez
uŜytkownika własnościach. MATLAB uŜywa
wartości domyślnej dla kaŜdej własności nie
zmodyfikowanej przez uŜytkownika.
figure(h) robi dwie rzeczy w zaleŜności czy okienko
o uchwycie h istnieje czy nie. JeŜeli h jest uchwytem
do istniejącego okienka, figure(h) ustawia okienko h
na okienko aktywne, przesuwa je na wierzch.
Aktywne okienko jest uŜywane jako aktualne
wyjście graficzne. JeŜeli h nie jest uchwytem
istniejącego okienka, ale jest liczbą całkowitą,
figure(h) tworzy okienko i przyporządkowuje mu
uchwyt h. figure(h) gdzie h nie jest uchwytem
okienka lub nie jest liczbą całkowitą jest błędne.
h = figure(...) zwraca uchwyt do obiektu Figure.
9
zoom
Powiększanie i
pomniejszanie
wykresu 2-D
zoom on
zoom off
zoom out
zoom reset
zoom
zoom xon
zoom yon
zoom(factor)
zoom on włącza interaktywne zoomowanie.
UmoŜliwia to zbliŜanie i oddalanie obrazu poprzez
naciśnięcie przycisku myszki w obszarze wykresu.
Złomowanie zmienia wartości graniczne osi.
•
Dla myszki jednoprzyciskowej zbliŜanie
uzyskuje
się
poprzez
naciśnięcie
przycisku, oddalanie poprzez naciśnięcie
Shift i przycisku myszki.
•
Dla myszki dwu i trójprzyciskowej –
zbliŜanie poprzez naciśnięcie lewego
przycisku, oddalanie poprzez naciśnięcie
prawego przycisku.
Wciśnięcie przycisku i przesuwanie myszy
powoduje rysowanie prostokąta, którego zawartość
jest powiększana w momencie zwolnienia przycisku
myszy. Podwójne kliknięcie ponad osiami powoduje
powrót do powiększenia początkowego.
zoom off wyłącza interaktywny zooming.
zoom out ustawia powiększenie wykresu do wartości
początkowej
zoom reset ustawia aktualne powiększenie jako
domyślne.
zoom przełącza stan powiększania interaktywnego.
zoom xon i zoom yon ustawia odpowiednio zoom on
dla osi x i y.
zoom(factor) zbliŜa lub oddala z określonym
współczynnikiem bez wpływu na aktualny tryb
zoomowania. Wartości większe od 1 zbliŜają obraz o
określoną wartość, wartości mniejsze od 1 i większe
od 0 oddalają ze współczynnikiem 1/factor.
10
close
Usuwa określone
okienko wykresu
close
close(h)
close all
drawnow
Wykonuje
wszystkie
polecenia
rysowania
oczekujące w
kolejce
drawnow
hidden
Usuwa ukryte
linie z obiektów
siatkowych
hidden on
hidden off
hidden
shading
Ustawia metodę
cieniowania
shading flat
shading faceted
shading interp
close Kasuje bieŜące okienko lub określone okienka.
Opcjonalnie zwraca status wykonanej operacji
kasowania.
close kasuje bieŜące okienko (równowaŜne do
close(gcf)).
close(h) Kasuje okienko o uchwycie h. JeŜeli h jest
wektorem lub macierzą, kasuje wszystkie obiekty
określone przez h.
close all kasuje wszystkie obiekty graficzne, których
uchwyty nie są ukryte.
drawnow czyści kolejkę oczekujących poleceń
rysowania i odświeŜa okienko
Hidden rysuje jedynie linie które są widoczne dla
obserwatora (niezasłonięte przez inne obiekty,
płaszczyzny lub linie)
hidden on włącza usuwanie niewidocznych linii dla
bieŜącego wykresu. Linie znajdujące się z tyłu
obiektu nie są rysowane. Jest to ustawienie
domyślne.
hidden off wyłącza usuwanie niewidocznych linii dla
bieŜącego wykresu.
hidden przełącza opcję usuwania linii
Funkcja shading kontroluje sposób cieniowania dla
obiektów Surface i Patch (powierzchnie i łaty).
shading flat kaŜda linia siatki obiektu i jego ścianki
posiadają stały jednorodny kolor określony przez
kolor ostatniego pojedynczego punktu ścianki
posiadającej najmniejszy indeks.
shading faceted cieniowanie jednorodne z
nałoŜonymi czarnymi liniami siatki. Jest to
ustawienie domyślne.
shading interp określa kolor kaŜdej linii I ścianki
poprzez interpolację kolorów z bieŜącej mapy
kolorów wzdłuŜ linii lub ścianki
x = -pi:pi/20:pi;
plot(x,cos(x)); drawnow
title('A Short Title');grid on
[x,y] = meshgrid([-1.75:.2:3.25]);
z = x.*exp(-x.^2-y.^2);
surf(x,y,z);
shading interp
11
colorbar
Wyświetla
barwną skalę
wartości.
Colorbar
colorbar('vert')
colorbar('horiz')
colorbar(h)
h = colorbar(...)
Funkcja colorbar wyświetla bieŜącą mapę kolorów w surf(peaks(30))
colormap cool
bieŜącym okienku przyporządkowując kaŜdemu
colorbar
kolorowi wartość liczbową z zakresu wartości
występujących na osiach.
colorbar odświeŜa pasek kolorów lub dodaje nowy
pionowy w przypadku gdy aktywne okienko nie
posiadało paska kolorów
colorbar('vert') Dodaje pionową skalę kolorów do
obiektu Axes
colorbar('horiz') Dodaje poziomą skalę kolorów do
obiektu Axes
colorbar(h) umieszcza skalę kolorów przu obiekcie
zdefiniowanym uchwytem h. Pasek kolorów jest
poziomy jeśli szerokość osi jest większa niŜ ich
wysokość.
h = colorbar(...) zwraca uchwyt do paska kolorów.
12
axis
Wygląd i skala
osi
axis([xmin xmax ymin ymax])
axis([xmin xmax ymin ymax zmin
zmax])
v = axis
axis auto
axis manual
axis tight
axis fill
axis ij
axis xy
axis equal
axis image
axis square
axis vis3d
axis normal
axis off
axis on
• Osiami moŜna manipulować zwykle poprzez uŜycie
opcji Axes properties. (zobacz Algorithm section.)
• axis([xmin xmax ymin ymax]) ustawia limity dla osi
x, y dla bieŜącego obiektu Axes.
• axis([xmin xmax ymin ymax zmin zmax]) ustawia
limity dla osi x, y, z dla bieŜącego obiektu Axes.
• v = axis zwraca wektor zawierający współczynniki
skalowania dla osi x, y, z.
• axis auto ustawia automatycznie limity wartości na
osiach.
• axis manual and axis(axis) zatrzymuje skalowanie na
•
•
•
•
•
•
•
•
•
•
bierzących limitach wartości. Jeśli zostanie uŜyta
funkcja hold on, kolejne wykresy będą uŜywały tych
samych zakresów wartości na osiach.
axis tight ustawia proporcje rozmiaru osi tak, Ŝe
jednostka danych na osiach jest taka sama we
wszystkich kierunkach. axis fill ustawia limity osi w
odniesieniu do zakresu danych
axis ij umieszcza początek układu współrzędnych w
lewym górnym rogu.
axis xy rysuje wykres w domyślnym układzie
kartezjańskim z początkiem układu w dolnym lewym
rogu
axis equal ustawia proporcje rozmiaru osi tak Ŝe
jednostki danych są takie same we wszystkich
kierunkach. Proporcje rozmiaru osi są ustawiane
automatycznie w odniesieniu do zakresu danych w
kierunkach x, y, z
axis image tak samo jak axis equal za wyjątkiem tego
ze obszar rysowania ściśle przylega do rysowanych
danych.
axis square tworzy bieŜący obiekt Axes
kwadratowym (lub sześciennym w przypadku
wykresów 3-D). MATLAB reguluje osie x, y, z tak
Ŝe mają one jednakową długość
axis vis3d blokuje współczynnik proporcji osi w celu
umoŜliwienia obracania 3-D
axis normal automatycznie reguluje współczynnik
proporcji osi tak aby wykres wypełnił okienko
rysowania.
axis off wyłącza wszystkie osie, znaczniki, etykiety
axis on włącza wszystkie osie, znaczniki, etykiety.
13
griddata
Generowanie
siatki
ZI = griddata(x,y,z,XI,YI)
[XI,YI,ZI] = griddata(x,y,z,xi,yi)
[...] = griddata(...,method)
meshgrid
Generuje
[X,Y] = meshgrid(x,y)
macierze X i Y
[X,Y] = meshgrid(x)
do wykresów
[X,Y,Z] = meshgrid(x,y,z)
trójwymiarowych
ZI = griddata(X,Y,Z,XI,YI) tworzy powierzchnię
X1,Y1 na podstawie najczęściej niejednorodnie
rozłoŜonych danych (X,Y,Z), gdzie Z = F(X,Y).
griddata interpoluje tę powierzchnię w punktach
określonych przez (XI,YI) w celu obliczenia ZI.
Powierzchnia zawsze przechodzi przez punkty
danych. XI i YI są przewaŜnie jednorodna siatką
(stworzoną przez meshgrid).
[XI,YI,ZI] = griddata(X,Y,Z,XI,YI) zwraca XI i YI
stworzone tą drogą (wynik [XI,YI] =
meshgrid(XI,YI)).
[...] = griddata(...,'method') gdzie 'method' moŜe być:
'linear' – liniowa interpolacja (domyslna).
'cubic' - cubic interpolation.
'nearest' - interpolacja najbliŜszych sąsiadów.
'v4'
- MATLAB 4 griddata method.
rand('seed',0)
x = rand(100,1)*4-2; y = rand(100,1)*4-2;
z = x.*exp(-x.^2-y.^2);
% x, y, and z are now vectors containing
% nonuniformly sampled data. Define a
% regular grid, and grid the data to it:
ti = -2:.25:2;
[XI,YI]=meshgrid(ti,ti);
ZI=griddata(x,y,z,XI,YI);
%Plot the gridded data along with the
%nonuniform data points used to generate
%it:
mesh(XI,YI,ZI), hold on
plot3(x,y,z,'o');
hold off
[X,Y] = meshgrid(x,y) transformuje obszar
[X,Y] = meshgrid(1:3,10:14)
określony przez wektory x i y w tablice X i Y, które
mogą być uŜyte do opisu funkcji dwóch zmiennych
w przypadku wykresów siatkowych I
powierzchniowych 3-D. Rządy tablicy wyjściowej X
są kopiowane z wektora T x; kolumny Y są
kopiowane z wektora y.
[X,Y] = meshgrid(x) to samo co
[X,Y] = meshgrid(x,x).
[X,Y,Z] = meshgrid(x,y,z) generuje trójwymiarowe
tablice uŜywane do opisania funkcji trzech
zmiennych.
14
MATLAB Graphic - Wykresy 3D
% Three-dimensional bar chart
% style detached
Y = cool(7);
bar3(Y,'detached')
% Three-dimensional bar chart
% style grouped
Y = cool(7);
bar3(Y,'grouped')
1
40
0.5
30
% Three-dimensional bar chart
% style grouped
Y = cool(7);
bar3(Y,'stacked')
0.6
0.4
0.2
0
20
0
-0.2
10
-0.4
-0.5
0
1
-1
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
0.5
2
-1
0
-1
-0.5
-1
-0.5
0
0
-0.5
%plots velocity vectors as arrows
with
%components (px,py)
[x,y] = meshgrid(-2:.2:2,-1:.15:1);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.15);
contour(x,y,z), hold on
quiver(x,y,px,py);
hold off, axis image
1
1
0.5
0
0.5
-2
-1
% Linear 3-D plot
t = 0:pi/50:10*pi;
plot3(sin(t), cos(t), t)
grid on
axis square
1
% Three-dimensional velocity plot
[X,Y]=meshgrid(-2:0.25:2,...
-1:0.2:1 );
Z = X.* exp(-X.^2 - Y.^2);
[U,V,W] = surfnorm(X,Y,Z);
quiver3(X,Y,Z,U,V,W,0.5);
1.5
0.5
1
0
0.5
0
1
-0.5
1
0.5
2
2
0
-0.5
-1
-1
1
0
0
-0.5
% Volumetric slice plot
% Visualize the function
% v = x*exp(-x.2-y2-z2)
[x,y,z] = meshgrid(-2:.2:2, 2:.25:2, -2:.16:2);
v = x.*exp(-x.^2-y.^2-z.^2);
xslice = [-1.2 .8 2];
yslice = 2;
zslice = [-2 0];
slice(x,y,z,v,xslice,yslice,zslice);
colormap jet; rotate3d on
0.5
1
0
-1
-1
-2
% Plot three-dimensional discrete
% sequence data
[X,Y]=meshgrid(-2:0.5:2,...
-1:0.4:1);
Z = X.* exp(-X.^2 - Y.^2);
stem3(X,Y,Z+1,'fill')
-2
% Waterfall plot
[X,Y] = meshgrid(-2:0.1:2,...
-1:0.1:1);
Z = X.* exp(-X.^2 - Y.^2);
waterfall(X,Y,Z)
3
25
2.5
0.4
2
20
1.5
0.2
0.1
0
-0. 1
1
15
.4
-0 .2
-0
0
0
0. 2
0.
3
-0.3
0.5
-0.2
10
-0.4
2
0.2
0
-0.1
-1
0.1
-0.1
-0.3
-0.2
-0.5
0.1
5
1
-1.5
-2
-2
2
1
0
0
-1
-1.5
-1
-0.5
0
0.5
1
1.5
2
2
4
6
8
10
12
14
16
18
20
-1
-2
-2
15
% Two-dimensional contour plot
[X,Y] = meshgrid(-2:.2:2,-2:.2:3);
Z = X.*exp(-X.^2-Y.^2);
[C,h] = contour(X,Y,Z);
clabel(C,h);
colormap cool;
% Two-dimensional contour plot
[X,Y] = meshgrid(-2:.2:2,-2:.2:3);
Z = X.*exp(-X.^2-Y.^2);
[C,h] = contourf(Z,10);
colormap autumn
% Three-dimensional contour plot
[X,Y] = meshgrid([-2:.25:2]);
Z = X.*exp(-X.^2-Y.^2);
contour3(X,Y,Z,30);
colormap jet
grid off
% Display a surface and
% contour plot
[X,Y] = meshgrid([-2:.15:2]);
Z = X.*exp(-X.^2-Y.^2);
surfc(X,Y,Z);
% Three-dimensional shaded
surface
% from z components in matrix Z
[X,Y] = meshgrid([-2:.15:2]);
Z = X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
% Three-dimensional shaded
surface
% from z components in matrix Z
[X,Y] = meshgrid([-2:.15:2]);
Z = X.*exp(-X.^2-Y.^2);
surfl(X,Y,Z);
shading interp; colormap(gray);
% Combination mesh/contourplot
[X,Y] = meshgrid([-2:.15:2]);
Z = X.*exp(-X.^2-Y.^2);
meshc(X,Y,Z);
% 3-D mesh with reference plane
[X,Y] = meshgrid([-2:.15:2]);
Z = X.*exp(-X.^2-Y.^2);
mesh(X,Y,Z);
% 3-D mesh with reference plane
[X,Y] = meshgrid([-2:.15:2]);
Z = X.*exp(-X.^2-Y.^2);
meshz(X,Y,Z);
% Triangular mesh plot
[X,Y] = meshgrid([-2:.15:2]);
Z = X.*exp(-X.^2-Y.^2);
tri = delaunay(X,Y);
trimesh(tri,X,Y,Z)
% Triangular surface plot
[X,Y] = meshgrid([-2:.15:2]);
Z = X.*exp(-X.^2-Y.^2);
tri = delaunay(X,Y);
trisurf(tri,X,Y,Z)
% Ribbon plot
[x,y] = meshgrid(-3:.5:3,-3:.1:3);
z = peaks(x,y);
ribbon(y,z);
colormap hsv
16
INTERFEJS GRAFICZNY – FUNKCJE KOMUNIKACYJNE
Menu
menu polecenie o składni:
choice = menu(header, item1, item2, ... )
generuje menu wyboru o tytule określonym przez argument header i zawierające przyciski z
nazwami zawartymi w argumentach: item1, item2,... itemn. Parametr wyjściowy jest
wielkością skalarną odpowiadającą wybranemu przyciskowi. Nie ma ograniczeń na liczbę
przycisków.
Przykładowo wprowadzając polecenie:
k = menu('choose a color','red','blue','green')
otrzymujemy następujące okno:
i moŜemy dokonać wyboru opcji poprzez kliknięcie odpowiedniego przycisku.
Przykład 4.
k=1;
while (k<3)
k = menu('Select action', 'Plot Data1','Plot Data2','END');
switch k
case 1
plot(sin(0:0.1:2*pi))
case 2
plot(cos(0:0.1:2*pi))
end
end
Input dialog box.
INPUTDLG Input dialog box.
17
Answer = inputdlg(Prompt)
funkcja generuje okno dialogowe umoŜliwiające wprowadzenie ciągu alfanumerycznego.
Parametr wejściowy prompt jest typu „cell array” i zawiera tekst wypisywany w polu
dialogowym. Pole dialogowe moŜe być wykorzystane do wprowadzenia zmiennej tekstowej
lub numerycznej
Przykład pola dialogowego do definiowania zmiennej tekstowej:
prompt={'Enter the colormap name:'};
answer=char(inputdlg(prompt));
Przykład pola dialogowego do definiowania zmiennej numerycznej:
prompt={'Enter the velocity:'};
vel=str2num(char(inputdlg(prompt)));
Question dialog box
ButtonName=QUESTDLG(Question)
polecenie generuje okno dialogowe często stosowane w programach. W oknie tym znajdują
się trzy przyciski z napisami „Yes”, „No” i „Cancel”. Funkcja po kliknięciu zwraca string
odpowiadający wybranemu przyciskowi.
Przykład 5.
ButtonName=questdlg('Do you like to change the parameters?');
switch ButtonName,
case 'Yes',
disp('Action for Yes');
case 'No',
disp('Action for No');
end
Po wykonaniu poleceń generowane jest okno:
i klikając myszą moŜemy dokonać wyboru odpowiedniej opcji.
18
Program ćwiczenia
1. Wykreśl funkcję f(x,y) = sin(x) * cos(y) w przedziale <0:10> co 0.5, uŜywając dwóch
funkcji graficznych, pcolor i surf. Dodaj opis osi, wprowadź legendę oraz skalę barw.
Wykorzystaj mapy kolorów jet, hot, oraz gray.
2. Wykorzystując powyŜsze funkcje komunikacyjne napisz skrypt do obliczania układu
równań postaci:
3x1 + x 2 − x3 = 0

5 x1 + 3x 2 − 2 x3 = −3
7 x + 2 x + 2 x = 5
2
3
 1
z moŜliwością wprowadzania wartości macierzy współczynników A oraz macierzy
wynikowej B. Wprowadź moŜliwość wyboru sposobu prezentacji wyników
(wykreślanie za pomocą funkcji bar lub wyświetlanie w Workspace).
% definicja inputdlg
prompt={'a11: ', 'a12: ', 'a13: ','a21:', 'a22: ','a23:', 'a31: ',...
'a32:', 'a33: ', 'b11: ', 'b21: ','b31: '};
lineNo=1;
titleWin='Parametry wejsciowe';
def={'3','1','-1','5','3','-2','7','2','2','0','-3','5'};
answer=inputdlg(prompt,titleWin,lineNo,def);
% odzyskiwanie wartosci
[temp]= str2num(char(answer));
%wczytywanie wartosci do macierzy A i B
A=[temp(1:3)';temp(4:6)';temp(7:9)'];
B=temp(10:12);
% rozwiazanie ukladu rownan
X=A^-1*B;
%button = questdlg('pytanie','tytul okna','przycisk 1','przycisk 2',
%'domyslny przycisk')
Type = questdlg('Co zrobic z wynikami?', ...
'Pytanie?', ...
'Wykresl','Pokaz wyniki','Wykresl');
% okreslenie reakcji na wybrany przycisk
switch Type
case 'Wykresl',
figure;
bar(X,'k');
title('wartosci elementow macierzy X');
figure;
bar(A);
legend('wiersz 1-szy', 'wiersz 2-gi', 'wiersz 3-ci','Location',
...
'NorthOutside');
title('wartosci elementow macierzy A');
figure;
bar(B);
title('wartosci elementow macierzy B');
case 'Pokaz wyniki',
clc
disp('Rozwiazanie dla macierzy A postaci :');
A
disp('i macierzy B postaci :');
B
disp('jest dane :');
X
end
19