Escolar Documentos
Profissional Documentos
Cultura Documentos
http://www.mec.ita.br/~adade/Matlab/Web/gra...
MATLAB BSICO
Prof. Alberto Adade Filho (ITA/CTA)
ndice
Seo Anterior
20. Traando Grcos no MATLAB
i. Introduo
ii. Forma Bsica
iii. Diagramas Polares
iv. Curvas no Espao Tridimensional
v. Particionamento da Tela
vi. Ttulos, Rtulos, Texto, Grade
vii. Controle de Telas e de Escalas
viii. Estilo de Linhas, Marcaes e Cores
ix. Grcos de Superfcies
x. Preparao de Grades de Dados e Plotagem
xi. Impresso de Grcos
xii. Manipulao de Grcos
i. Introduo
Os principais tipos de grcos proporcionados so:
plot / plot3 : linear X-Y / linear X-Y-Z
loglog : log-log X-Y
semilogx / semilogy : semilog X-Y (eixo X logartmico/eixo Y
logartmico, respectivamente)
polar : diagrama polar
mesh / surf : superfcie malha tridimensional / superfcie facetada
tridimensional
stairs : prprio para sinais amostrados
hist, bar : histograma
Obs. A sada grca mostrada em janela(s) diferente(s) da janela de
comandos.
Retorna.
1 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
2 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
3 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
4 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
Obs. 2 Reticulado pode ser includo e removido de um grco (grid on, grid
o).
Ex 2. Plotar a funo R = k q , k = 1 / 2p , num diagrama polar.
R = th / (2*pi) ;
polar (th,R), grid
Retorna.
5 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
v. Particionamento da Tela
A tela pode ser particionada em at quatro janelas, permitindo, deste modo,
mostrar vrios grcos simultaneamente. O comando para isso :
subplot(r,c,p)
A tela particionada em r x c janelas e p a janela atual. Por exemplo,
subplot(2,1,2) particiona a tela em duas janelas na vertical e coloca o grco
corrente na segunda janela.
Ex:
clf ; % limpa a tela grca
wt = 0 : 0.05 : 3*pi;
x = sin(wt);
y = sin(wt - pi/4);
subplot(1,2,1), plot(wt,x,'r',wt,y,'g'); xlabel('wt - radianos)
subplot(1,2,2), plot (x,y,'b');
6 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
xlabel('x=sen(wt)'); ylabel('y=sen(wt-pi/4)')
Retorna.
7 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
8 de 21
Smbolo
Cor
Smbolo
Estilo da Linha
amarela
ponto
magenta
crculo
cyan
vermelha
verde
asterisco
azul
linha cheia
branca
dois pontos
preta
trao-ponto
--
linha pontilhada
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
Retorna.
9 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
3) O comando meshgrid produz este plano criando duas matrizes com linhas
e colunas repetidas dos vetores x e y;
4) Finalmente, a funo calculada nos elementos das matrizes resultantes.
A funo mesh (ou a funo surf) ento aplicada sobre o resultado.
Ex 1. Plotar um grco de superfcie do valor absoluto da funo,
para -3 s 3 e -3 w 3.
w = linspace(-3,3,50); % cria vetor com 50 elementos linearmente
espaados %entre -3 e 3
s = linspace(-3,3,50);
[W,S] = meshgrid(w,s);
re = S .^2 - W .^2 + S + 1;
im = 2 * S .* W + W;
den = re + j * im;
g = 1 ./ abs(den);
mesh(s,w,g)
10 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
Ex. 2.
n = 30; a = 1; r = 0.5;
teta = pi * (0 : 2 : 2 * n) / n;
= 2 * pi * (0 : 2 : n)' / n;
x = (a + r * cos()) * cos(teta);
y = (a + r * cos()) * sin(teta);
z = r * sin() * ones(size(teta));
surf(x,y,z)
q = (a + r)/sqrt(2);
axis([-q,q,-q,q,-q,q])
11 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
-0.2857
-0.2857
-0.2857
-0.2857
-0.2857
-0.2857
-0.2857
-0.2857
-0.2857
-0.2857
0.4286
0.4286
0.4286
0.4286
0.4286
0.4286
0.4286
0.4286
0.4286
0.4286
1.1429
1.1429
1.1429
1.1429
1.1429
1.1429
1.1429
1.1429
1.1429
1.1429
1.8571
1.8571
1.8571
1.8571
1.8571
1.8571
1.8571
1.8571
1.8571
1.8571
2.5714
2.5714
2.5714
2.5714
2.5714
2.5714
2.5714
2.5714
2.5714
2.5714
3.2857
3.2857
3.2857
3.2857
3.2857
3.2857
3.2857
3.2857
3.2857
3.2857
4.0000
4.0000
4.0000
4.0000
4.0000
4.0000
4.0000
4.0000
4.0000
4.0000
yi =
-2.0000 -2.0000 -2.0000 -2.0000 -2.0000 -2.0000 -2.0000 -2.0000
-1.2222 -1.2222 -1.2222 -1.2222 -1.2222 -1.2222 -1.2222 -1.2222
-0.4444 -0.4444 -0.4444 -0.4444 -0.4444 -0.4444 -0.4444 -0.4444
0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333
1.1111 1.1111 1.1111 1.1111 1.1111 1.1111 1.1111 1.1111
1.8889 1.8889 1.8889 1.8889 1.8889 1.8889 1.8889 1.8889
2.6667 2.6667 2.6667 2.6667 2.6667 2.6667 2.6667 2.6667
3.4444 3.4444 3.4444 3.4444 3.4444 3.4444 3.4444 3.4444
4.2222 4.2222 4.2222 4.2222 4.2222 4.2222 4.2222 4.2222
5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000 5.0000
A sada de griddata fornece,
zi =
-1.5000 -3.6231 -4.8905 -6.5450 -8.8930 -11.9982 -15.9128
-20.6776
13 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
xi Impresso de Grcos
O comando print faz uma cpia de alta resoluo da tela grca para a
impressora. Os valores predenidos utilizados pelo comando print esto no
M-le printopt.m; o usurio pode alterar tais valores editando este arquivo.
O comando,
print nome-do-arquivo
salva o grco corrente no arquivo especicado; se o arquivo especicado j
existir ele substitudo pelo novo, a menos que seja usada a opo append:
print -append nome-do-arquivo
que acrescenta o grco corrente ao arquivo existente. Dessa forma, pode-se
ter vrios grcos num mesmo arquivo.
A verso 4.2 proporciona o recurso de salvar e recarregar um grco. O
comando,
print -dmle nome-do-arquivo
cria um M-le contendo as informaes necessrias para posteriormente
reproduzir a gura. Esta verso tambm possibilita especicar que janela
grca deve ser impressa, utilizando-se a opo -f. Por exemplo,
print -f2
imprime a janela de gura cujo handle (vide sub-seo xii) seja 2, qualquer
que seja a janela de gura corrente. Um diagrama de blocos Simulink
(software para simulao de sistemas dinmicos, integrado ao Matlab) pode
ser impresso usando-se o ttulo da janela, por exemplo,
print -ftanques
onde tanques entitula a janela Simulink.
14 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
15 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
handle = plot(x,y)
Para se saber quais so as propriedades de um objeto grco e como
alter-las utiliza-se os comandos get e set. A sintaxe bsica para esses
comandos como segue:
get (handle, NomedaPropriedade)
set(handle, NomedaPropriedade, ValordaPropriedade)
Para se determinar o valor de uma propriedade do objeto, utiliza-se o
comando get como no exemplo: c = get(handle,color). O comando get sem
se especicar as propriedades, get(handle), retorna uma lista com todas as
propriedades e valores atuais para o objeto correspondente; por exemplo, get
(gcf) determina as propriedades associadas com a gura atual (no caso a do
exemplo de curvas de nveis) (vide tabela abaixo, lista esquerda). Para se
determinar as propriedades de um objeto que podem ser controladas pelo
usurio, tecla-se set(handle). Os pr-ajustes (default) opcionais (isto ,
aqueles que podem ser alterados) so mostrados entre chaves {}; por
exemplo, set(gcf) retorna, para a gura em foco, a lista direita,
get (gcf)
BackingStore = on
Color = [1 1 1]
Colormap = [ (64 by 3) ]
CurrentAxes = [0.000366211]
CurrentCharacter =
CurrentMenu = [1]
CurrentObject = [1]
CurrentPoint = [206 10]
FixedColors = [
0
1
1
1
0
1
0
0
0
1
1
0
1
0
1
0
0
1
0
1
1
0
0
1
]
InvertHardcopy = on
KeyPressFcn =
MenuBar = gure
MinColormap = [64]
Name =
16 de 21
set(gcf)
BackingStore: [ {on} | o ]
Color
Colormap
CurrentAxes
CurrentObject
InvertHardcopy: [ on | {o} ]
KeyPressFcn
MenuBar: [ none | {gure} ]
MinColormap
Name
NextPlot: [ new | {add} |
replace ]
NumberTitle: [ {on} | o ]
PaperUnits: [ {inches} |
centimeters | normalized |
points ]
PaperOrientation: [ {portrait} |
landscape ]
PaperPosition
PaperType: [ {usletter} |
uslegal | a4letter ]
Pointer: [ crosshair | {arrow} |
watch | topl | topr | botl | botr |
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
NextPlot = add
NumberTitle = on
PaperUnits = inches
PaperOrientation = portrait
PaperPosition = [0.25 2.5 8 6]
PaperSize = [8.5 11]
PaperType = usletter
Pointer = arrow
Position = [70 45 500 375]
Resize = on
SelectionType = normal
ShareColors = yes
Units = pixels
WindowButtonDownFcn =
WindowButtonMotionFcn =
WindowButtonUpFcn =
ButtonDownFcn =
Children = [0.000366211]
Clipping = on
Interruptible = no
Parent = [0]
Type = gure
UserData = []
Visible = on
get(gca)
AspectRatio = [NaN NaN]
Box = on
CLim = [0 1]
CLimMode = auto
17 de 21
set(gca)
AspectRatio
Box: [ on | {o} ]
CLim
CLimMode: [ {auto} |
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
Color = none
CurrentPoint = [ (2 by 3) ]
ColorOrder = [ (6 by 3) ]
DrawMode = normal
FontAngle = normal
FontName = Helvetica
FontSize = [12]
FontStrikeThrough = o
FontUnderline = o
FontWeight = normal
GridLineStyle = :
LineStyleOrder = LineWidth = [0.5]
NextPlot = replace
Position = [0.13 0.11 0.775
0.815]
TickLength = [0.01 0.025]
TickDir = in
Title = [69.0001]
Units = normalized
View = [0 90]
XColor = [1 1 1]
XDir = normal
Xform = [ (4 by 4) ]
XGrid = o
XLabel = [66.0001]
XLim = [-1 4]
XLimMode = manual
XScale = linear
XTick = [-1 0 1 2 3 4]
XTickLabels =
-1
0
1
2
3
4
XTickLabelMode = auto
XTickMode = auto
YColor = [1 1 1]
YDir = normal
YGrid = o
YLabel = [67.0001]
YLim = [-2 5]
YLimMode = manual
18 de 21
manual ]
Color: [ {none} ] -or- a
ColorSpec.
ColorOrder
DrawMode: [ {normal} |
fast ]
FontAngle: [ {normal} |
italic | oblique ]
FontName
FontSize
FontStrikeThrough: [ on |
{o} ]
FontUnderline: [ on | {o}
]
FontWeight: [ light |
{normal} | demi | bold ]
GridLineStyle: [ - | -- | {:} |
-. ]
LineStyleOrder
LineWidth
NextPlot: [ new | add |
{replace} ]
Position
TickLength
TickDir: [ {in} | out ]
Title
Units: [ inches |
centimeters | {normalized}
| points | pixels ]
View
XColor
XDir: [ normal | {reverse} ]
Xform
XGrid: [ on | {o} ]
XLabel
XLim
XLimMode: [ {auto} |
manual ]
XScale: [ {linear} | log ]
XTick
XTickLabels
XTickLabelMode: [ {auto} |
manual ]
XTickMode: [ {auto} |
manual ]
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
YScale = linear
YTick = [ (1 by 8) ]
YTickLabels =
-2
-1
0
1
2
3
4
5
YTickLabelMode = auto
YTickMode = auto
ZColor = [1 1 1]
ZDir = normal
ZGrid = o
ZLabel = [68.0001]
ZLim = [-1 1]
ZLimMode = auto
ZScale = linear
ZTick = [-1 0 1]
ZTickLabels =
ZTickLabelMode = auto
ZTickMode = auto
ButtonDownFcn =
Children = [ (9 by 1) ]
Clipping = on
Interruptible = no
Parent = [1]
Type = axes
UserData = []
Visible = on
YColor
YDir: [ {normal} | reverse ]
YGrid: [ on | {o} ]
YLabel
YLim
YLimMode: [ {auto} |
manual ]
YScale: [ {linear} | log ]
YTick
YTickLabels
YTickLabelMode: [ {auto} |
manual ]
YTickMode: [ {auto} |
manual ]
ZColor
ZDir: [ {normal} | reverse ]
ZGrid: [ on | {o} ]
ZLabel
ZLim
ZLimMode: [ {auto} |
manual ]
ZScale: [ {linear} | log ]
ZTick
ZTickLabels
ZTickLabelMode: [ {auto} |
manual ]
ZTickMode: [ {auto} |
manual ]
ButtonDownFcn
Clipping: [ {on} | o ]
Interruptible: [ {no} | yes ]
Parent
UserData
Visible: [ {on} | o ]
19 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
L1=fplot(humps, [0 2]);
set (L1, Color, r); % troca a cor da linha do grco para
vermelho.
Para se alterar a largura de linha,
set (h, LineWidth, size)
onde h o identicador (handle) para uma linha e size a largura que se
deseja (pr-ajuste de 0.5). Para se alterar a fonte usada nos rtulos dos
eixos,
set (h, FontName, fonte)
Usando gca (de "get current axis") ou gcf (de "get current gure") como o
handle no comando get ou set, pode-se alterar as propriedades dos eixos
atuais ou da gura atual. Por exemplo, para se alterar o valor de pr-ajuste
para as linhas de eixos,
set (gca, LineWidth, 10) % qualquer linha plotada a partir deste
comando ter %uma largura de 10
Para se alterar para courier a fonte dos rtulos dos eixos antes de serem
criados,
set (gca, FontName, courier)
Para se especicar um dos extremos de um eixo deixando o outro extremo ser
auto-escalonado, p. ex. o limite mnimo do eixo-x em zero e o limite mximo
auto-escalonado,
set(gca, 'XLim', [ 0 Inf ])
e o limite mximo em 40, deixando o limite mnimo ser auto-escalonado,
set(gca, 'XLim', [ -Inf 40])
Para se tornar invisveis os eixos,
set (gca, Visible, o)
Para especicar que tipos de linhas e a ordem em que devem ser usadas, por
exemplo,
set(gca, 'LyneStyleOrder', ' - | -- | : ')
Para alterar a cor do ttulo do eixo atual para vermelho,
set(get(gca,'Title'), 'Color', 'r')
20 de 21
21-09-2014 10:48
http://www.mec.ita.br/~adade/Matlab/Web/gra...
21 de 21
21-09-2014 10:48