26
Prof. Ricardo N. Paiva Robótica Aula 02 Matlab: Gráficos 2D/3D 1

Aula 02 Matlab Graficos

Embed Size (px)

Citation preview

Page 1: Aula 02 Matlab Graficos

Prof. Ricardo N. Paiva

Robótica

Aula 02

Matlab: Gráficos 2D/3D

1

Page 2: Aula 02 Matlab Graficos

2

Gráficos em duas dimensões

Para obter informações sobre um tópico específico, digite help tópico. Por exemplo, >> help plotxy que fornece uma lista de todos os comandos relacionados com gráficos bidimensionais: Two dimensional graphics. Elementary X-Y graphs. plot - Linear plot. loglog - Log-log scale plot. semilogx - Semi-log scale plot. semilogy - Semi-log scale plot. fill - Draw filled 2-D polygons.

Page 3: Aula 02 Matlab Graficos

3

Gráficos em duas dimensões Specialized X-Y graphs.

polar - Polar coordinate plot. bar - Bar graph. stem - Discrete sequence or & "stemm" plot. stairs - Stairstep plot. errorbar - Error bar plot. hist - Histogram plot. rose - Angle histogram plot. compass - Compass plot. feather - Feather plot. fplot - Plot function comet - Comet-like trajectory.

Graph annotation. title - Graph title. xlabel - X-axis label. ylabel - Y-axis label. text - Text annotation. gtext - Mouse placement of text. grid - Grid lines.

Page 4: Aula 02 Matlab Graficos

4

Gráficos em duas dimensões

Finalmente, para obter informações sobre um comando específico, por exemplo title, digite: >> help title e informações mais detalhadas sobre este comando serão exibidas: TITLE Titles for 2-D and 3-D plots. TITLE (‘text’) adds text at the top of the current axis. Note que no exemplo mostrado para adicionar o título em um gráfico, TITLE (‘TEXT’) está escrito em letras maiúsculas somente para destacar. Deve-se lembrar que todos os comandos do MATLAB devem ser escritas em letras minúsculas, portanto, para adicionar o texto “Título do Gráfico” em um gráfico, digite: >> title (‘Título do Gráfico’)

Page 5: Aula 02 Matlab Graficos

5

Funções pré-definidas

O gráfico da função é: >> x = -l:0.0l:2; >> plot(x,humps(x)), grid

function y = humps(x)

y = l ./ ((x-.3).^2 + .0l) + 1./((x-.9).^2 + .04) - 6;

-1 -0.5 0 0.5 1 1.5 2-20

0

20

40

60

80

100

Page 6: Aula 02 Matlab Graficos

6

Determinando o mínimo num intervalo

A localização do mínimo da função humps(x) no intervalo de 0.5 a 1 é obtido da seguinte maneira: >> help fminbnd % para obter informações sobre o comando >> xmin = fminbnd(@humps,0.5,1) xmin = 0.6370 >> ymin = humps(xmin) ymin = 11.2528 E o gráfico deste intervalo com o ponto de mínimo pode ser construído: >> x = 0.5:0.01:1; >> plot(x, humps(x), xmin, ymin, '*') 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1

10

12

14

16

18

20

22

Page 7: Aula 02 Matlab Graficos

7

Determinando os zeros

A função humps(x) apresenta dois “zeros” no intercalo de -1 a 2. A localização do primeiro “zero” é próxima do ponto x = 0, >> xzl = fzero('humps',0) xzl = -0.1316 A localização do segundo “zero” é próxima do ponto x= 1, >> xz2 = fzero('humps',1) xz2 = 1.2995 O gráfico da função com os dois “zeros” é obtido através da expressão: >> x = -1:0.01:2; >> plot(x, humps(x), xzl, humps(xzl),'*', xz2, humps(xz2), '+'), grid

-1 -0.5 0 0.5 1 1.5 2-20

0

20

40

60

80

100

Page 8: Aula 02 Matlab Graficos

8

Gráficos

>> t=0:0.01:10; >> y=sin(t); >> plot(t,y)

0 1 2 3 4 5 6 7 8 9 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 9: Aula 02 Matlab Graficos

9

Gráficos

>> z=cos(t); >> plot(t,z)

0 1 2 3 4 5 6 7 8 9 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 10: Aula 02 Matlab Graficos

10

Gráficos

>> subplot(1,2,1) >> plot(t,y)

0 5 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 11: Aula 02 Matlab Graficos

11

Gráficos

>> subplot(1,2,2) >> plot(t,z)

0 5 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0 5 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Page 12: Aula 02 Matlab Graficos

12

Gráficos >> t=0:0.25:10; >> y=sin(t); >> plot(t,y,'r+') >> xlabel('tempo') >> ylabel('seno') >> title('Seno vs. Tempo') >> Axis([0 10 -2 2])

0 5 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0 5 10-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

tempo

seno

Seno vs. Tempo

Page 13: Aula 02 Matlab Graficos

13

Gráficos >> clear all >> t=0:0.25:10; >> y=sin(t); >> plot(t,y,'r+') >> xlabel('tempo') >> ylabel('seno') >> title('Seno vs. Tempo') >> Axis([0 10 -2 2])

0 1 2 3 4 5 6 7 8 9 10-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

tempo

seno

Seno vs. Tempo

Page 14: Aula 02 Matlab Graficos

>> t=0:0.01:10; >> y=sin(t); >> z=cos(t); >> plot(t,y,'g-',t,z,'r-') >> legend('seno','cosseno')

Ou...

>> t=0:0.01:10; >> y=sin(t); >> z=cos(t); >> plot(t,y,'g-‘) >> hold on >> plot(t,z,'r-') >> legend('seno','cosseno')

14

Gráficos: mais de uma curva

0 1 2 3 4 5 6 7 8 9 10-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

senocosseno

Page 15: Aula 02 Matlab Graficos

>> x = [1 3 0.5 2.5 2];

>> explode = [0 1 0 0 0];

>> pie(x,explode)

>> colormap jet

>> legend('EMB','IND','ACO','DIV','POT')

15

Gráfico: tortas

11%

33%

6%

28%

22%

EMBINDACODIVPOT

Page 16: Aula 02 Matlab Graficos

>> x = [1 3 0.5 2.5 2];

>> explode = [0 1 0 0 0];

>> pie3(x,explode)

>> colormap jet

>> legend('EMB','IND','ACO','DIV','POT')

16

28%

6%

22%

33%

11%

EMBINDACODIVPOT

Gráfico: tortas

Page 17: Aula 02 Matlab Graficos

>> x = -2.9:0.2:2.9;

>> bar(x,exp(-x.*x))

>> colormap hsv

17

-3 -2 -1 0 1 2 30

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Gráfico: barras

Page 18: Aula 02 Matlab Graficos

18

Gráficos em três dimensões

Page 19: Aula 02 Matlab Graficos

19

Gráficos em três dimensões

Estes são alguns comandos para plotar gráficos tridimensionais e contornos.

Plot3 Plotar em espaço 3D.

fill3 Desenhar polígono 3D.

comet3 Plotar em 3D com trajetória de cometa.

contour Plotar contorno 2D.

contour3 Plotar contorno 3D.

clabel Plotar contorno com valores.

quiver Plotar gradiente.

mesh Plotar malha 3D.

meshc Combinação mesh/contour.

surf Plotar superfície 3D.

surfc Combinação surf/contour.

surfil Plotar superfície 3D com iluminação.

slice Plot visualização volumétrica.

cylinder Gerar cilindro.

sphere Gerar esfera.

Page 20: Aula 02 Matlab Graficos

20

Gráficos em três dimensões

O comando mesh(X,Y,Z) cria uma perspectiva tridimensional plotando os elementos do vetor Z em relação ao plano definindo pelos vetores X e Y. Por exemplo, >> [X,Y] = meshgrid(-2:0.2:2, -2:0.2:2); >> Z = X.* exp(-X.^2 - Y.^2); >> mesh(X,Y,Z)

-2-1

01

2

-2-1

0

12

-0.5

0

0.5

Page 21: Aula 02 Matlab Graficos

21

Cortes em iso-linhas

O comando contour(Z,10) mostra a projeção da superfície acima no plano xy com 10 iso-linhas: >> contour(Z,10)

2 4 6 8 10 12 14 16 18 20

2

4

6

8

10

12

14

16

18

20

Page 22: Aula 02 Matlab Graficos

>> %Malha triangular da base >> %malha da base >> xx=0:0.01:1; >> yy=0:0.01:1; >> [X,Y]=meshgrid(xx,yy); >> Z=1-X-Y; >> mesh(X,Y,Z)

Composição (3 componentes)

22

Gráficos - Superfície

00.2

0.40.6

0.81

0

0.5

1-1

-0.5

0

0.5

1

Page 23: Aula 02 Matlab Graficos

%Malha triangular da base %malha da base >> xx=0:0.01:1; >> yy=0:0.01:1; >> [X,Y]=meshgrid(xx,yy); >> Z=1-X-Y; >> %aplica a restrição para usar só a base do triangulo >> %onde existe consistência física (o que não tem vira >> "Not a Number") >> iz=find(Z<0); >> Z(iz)=nan; >> mesh(X,Y,Z)

Alguns Z são negativos! Vamos eliminá-los!

23

Gráficos - Superfície

0

0.5

1 0 0.20.4 0.6 0.8 1

0

0.2

0.4

0.6

0.8

1

Page 24: Aula 02 Matlab Graficos

Peaks é uma função de duas variáveis obtida a partir da translação de duas distribuições Gaussianas >> [X,Y,Z] = peaks(30); >> surfc(X,Y,Z) >> colormap hsv >> axis([-3 3 -3 3 -10 7])

24

Gráficos – Função Peaks

-3-2

-10

12

3

-3-2

-10

12

3-10

-5

0

5

Page 25: Aula 02 Matlab Graficos

Colorir uma esfera seguindo o padrão de +1 e -1 segundo uma matriz Hadamard >> k = 5; >> n = 2^k-1; >>[x,y,z] = sphere(n); >> c = hadamard(2^k); >> surf(x,y,z,c); >> colormap([1 1 0; 0 1 1]) >> axis equal

25

Gráficos – Matriz Hadamard

-0.50

0.5

-0.5

00.5

-1

-0.5

0

0.5

1

Page 26: Aula 02 Matlab Graficos

Use “close all” para fechar todas as figuras

Use “clf” para apagar a figura atual

26

Dicas