• Nenhum resultado encontrado

Introdução ao MATLAB. Parte 3

N/A
N/A
Protected

Academic year: 2021

Share "Introdução ao MATLAB. Parte 3"

Copied!
15
0
0

Texto

(1)

Introdução ao MATLAB

Parte 3

(2)

6 Gráficos 2D

Há diversos comandos para produzir gráficos em 2D (veja a Figura 1 ). O mais utilizado deles é o comando plot. Ele admite argumentos de entrada, que permitem adicionar uma série de opções à saída gráfica, como título, identificação dos eixos, tamanho das fontes, cores, etc. É possível superpor gráficos ou obter vários deles em uma mesma janela. Estas opções serão ilustradas com diversos exemplos nos próximos parágrafos.

Figura 1 – Comandos para gerar gráficos 2D

(3)

Comandos plot, hold e grid ( Figura 2 )

% Script 6.1

x = 0:0.02*pi:2*pi;

y = sin(x);

z = cos(x);

% gera o gráfico do seno de x em preto plot(x,y,'black');

% o próximo comando retém a janela gráfica e suas propriedades

% para comandos gráficos adicionais hold on;

% gera o gráfico do cosseno de x em vermelho plot(x,z,'red');

% libera a janela gráfica hold off

% acrescenta um grid ao gráfico grid

Figura 2 – Comandos plot, hold e grid

Opções do comando plot ( Figura 3 ) – veja detalhes usando o comando help.

% Script 6.2

x = linspace(0,2*pi,30); % 30 divisões do intervalo [0,2*pi) y = sin(x);

z = cos(x);

plot(x,y,'b:p',x,z,'c-',x,z,'m+');

0 1 2 3 4 5 6 7

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

(4)

Figura 3 – Opções do comando plot

Quando as funções tan(x) e cot(x) são adicionadas, o eixo das ordenadas

“explode”; como resultado, informação é perdida e o gráfico não exibe mais o comportamento das funções trigonométricas (veja o resultado na Figura 4 ).

% Script 6.3

x = linspace(0,2*pi,30);

y = sin(x);

z = cos(x);

t = tan(x); % tangente de x ct = cot(x); % cotangente de x

plot(x,y,'r*',x,z,'mx',x,t,'bo-',x,ct,'kp-');

Para evitar isso, os valores mínimo e máximo dos eixos coordenados devem ser ajustados por meio do comando axis([xmin xmax ymin ymax]). A Figura 5 resulta da execução de

>> axis([0 2*pi -3 3]);

0 1 2 3 4 5 6 7

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

(5)

Figura 4 – Curvas de sin(x), cos(x), tan(x) e cot(x)

Figura 5 – Ilustração do comando axis na figura anterior

0 1 2 3 4 5 6 7

-4.5 -4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0 0.5x 1015

0 1 2 3 4 5 6

-3 -2 -1 0 1 2 3

(6)

A inclusão de título, a identificação dos eixos, a inserção de legenda e de um texto realizadas pelos comandos title, xlabel, ylabell, legend e text abaixo são vistos na Figura 6 ).

% Script 6.4

x = linspace(0,2*pi,30);

y = sin(x);

z = cos(x);

t = tan(x); % tangente de x ct = cot(x); % cotangente de x

plot(x,y,'r*',x,z,'mx',x,t,'bo-',x,ct,'kp-');

axis([0 2*pi -3 3]);title('Funções

Trigonométricas','FontSize',14,'Fontweight','Bold');

xlabel('Ângulo \theta [rad]','FontSize',14,'Fontweight','Bold',...

'FontAngle','normal');

ylabel('Funções','FontSize',14,'Fontweight','Bold','FontAngle',...

'italic');

legend('sin(\theta)','cos(\theta)','tan(\theta)','cot(\theta)');

text(0.5,-1.5,'\rightarrow Texto');

Figura 6 – Comandos title, xlabel, ylabel, legend e text

A saída para \theta é a letra grega  (segue a notação do LaTeX, por exemplo:

\alpha, \delta, \nabla). As características das fontes podem ser especificadas, tais como o tamanho em pontos (14, no caso), se negrito, normal ou itálico, etc.

0 1 2 3 4 5 6

-3 -2 -1 0 1 2 3

Funções Trigonométricas

Ângulo [rad]

Funções

 Texto

 Texto

 Texto

sin() cos() tan() cot()

(7)

O comando text serve para introduzir um texto qualquer em um ponto específico (x,y) da área gráfica.

Comando subplot

Através deste comando, pode-se exibir um arranjo de gráficos em uma mesma janela gráfica, como ilustra a Figura 7 .

Figura 7 – Arranjo gráfico obtido usando o comando subplot

Obtenha este gráfico, realizando cada uma das etapas do script abaixo e observando o resultado.

% Script 6.5

x = linspace(0,2*pi,30);

y = sin(x);

z = cos(x);

u = 2*sin(x).*cos(x);

v = sin(x)./(cos(x)+eps);

% reserva uma janela para 4 gráficos (2x2) e ativa

% a posição superior esquerda (1) subplot(2,2,1);

plot(x,y); % exibe y(x)

axis([0 2*pi -1 1]); % ajusta os eixos x e y title('sin(x)'); % titulo do gráfico ativo

0 2 4 6

-1 -0.5 0 0.5 1

sin(x)

0 2 4 6

-1 -0.5 0 0.5 1

cos(x)

0 2 4 6

-1 -0.5 0 0.5 1

2sin(x)cos(x)

0 2 4 6

-20 -10 0 10 20

2sin(x)/cos(x)

(8)

% ativa a posição superior direita (2) subplot(2,2,2);

plot(x,z); % exibe z(x)

axis([0 2*pi -1 1]); % ajusta os eixos x e z title('cos(x)'); % titulo do gráfico ativo

% ativa a posição inferior esquerda (3) subplot(2,2,3);

plot(x,u); % exibe u(x)

axis([0 2*pi -1 1]); % ajusta os eixos x e u title('2sin(x)cos(x)'); % titulo do gráfico ativo

% ativa a posição inferior direita (4) subplot(2,2,4);

plot(x,v); % exibe v(x)

axis([0 2*pi -20 20]); % ajusta os eixos x e v title('2sin(x)/cos(x)'); % titulo do gráfico ativo

Comandos loglog, semilogx e semilogy

Estes comandos devem ser usados quando escalas logarítmicas forem requeridas. Faça um script que gere a Figura 7 .

Figura 8 - Comandos loglog, semilogx e semilooy

Outros tipos de gráficos

O gráfico no formato de pizza ou torta, ilustrado na Figura 9 , é obtido por meio do comando pie(arg1,arg2). No script abaixo, o primeiro argumento contém os valores

0 2 4 6

0 0.5 1 1.5 2

1 - sin(x)

Escala decimal em X e em Y

100 0

0.5 1 1.5 2

1 - sin(x)

Escala log em X

0 2 4 6

10-2 100

1 - sin(x)

Escala log em Y

100 10-2

100

1 - sin(x)

Escala log em X e log em Y

(9)

a serem plotados e o segundo destaca a fatia de maior percentual. Obtenha o conteúdo do segundo argumento.

a = [0.5 1 1.5 2.0 1 0.3]; % valores a serem plotados pie(a,a==max(a));

title('Produção de grãos');

legend('Arroz','Feijão','Soja','Trigo','Milho','Cevada');

Figura 9 - Gráfico em formato de pizza

A versão tridimensional deste gráfico ( Figura 10 ) é obtida através de:

destaque = [0 1 0 1 0 1]; % pedaços em destaque

pie3(a,destaque); % formato pizza tridimensional colormap hsv; % opção de tonalidade de cor

Figura 10 – Versão 3D do gráfico pizza 8%

16%

24%

32%

16%

5%

Produção de grãos

Arroz Feijão Soja Trigo Milho Cevada

32%

16%

24%

5%

8%

16%

(10)

Gráficos de barras verticais são produzidos pelo comando bar(arg1, arg2), onde arg2 são as abscissas e arg1 são as ordenadas correspondentes. Para este caso, a escala dos valores das abcissas não é adequada para um gráfico de barras verticais (veja a Figura 11 ), pois os primeiros valores variam de 10 em 10 anos, enquanto nos dois últimos, a diferença é de apenas um ano.

a = [0.5 1 1.5 2.0 1 0.3]; % produção de grãos

b = [1960 1970 1980 1990 2000 2001]; % anos correspondentes bar(b,a); % gráfico de barras verticais

Figura 11 - Gráfico de barras verticais

Uma forma mais adequada seria utilizar um gráfico de barras horizontais como o da Figura 12 . Para isso, entre com os comandos abaixo.

a = [0.5 1 1.5 2.0 1 0.3]; % produção de grãos

b = [1960 1970 1980 1990 2000 2001]; % anos correspondentes barh(b,a); % gráfico de barras horizontais

xlabel('Anos de produção');

ylabel('Produção de grãos (em milhões de toneladas)');

1960 1970 1980 1990 20002001

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

(11)

Figura 12 - Gráfico de barras horizontais

No comando stairs abaixo, são usados os vetores a e b definidos anteriormente. O gráfico em escada obtido é mostrado na Figura 13 .

stairs(b,a);

xlabel(' Anos de produção ');

ylabel(' Produção em milhôes de toneladas ');

Figura 13 - Gráfico em escada

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

1960 1970 1980 1990 20002001

Anos de produção

Produção de grãos (em milhões de toneladas)

1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 0.2

0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Anos de produção

Produção em milhôes de toneladas

(12)

O próximo script produz o gráfico de área compreendida entre a curva e o eixo X ( Figura 14 ).

x = 0:0.05*pi:3*pi;

y = x.^3.*sin(x)+x/10;

xlabel(' Abcissa X ');

ylabel(' Ordenada = x.^3 * sin(x) + x/10 ');

area(x,y);

Figura 14 - Gráfico de área

Como último exemplo de gráficos em 2D, o script abaixo ilustra a obtenção de gráficos polares ( Figura 15 ). Os pontos das curvas não são mais descritos por pares ordenados (x,y) em coordenadas cartesianas, mas por pares (r,) em coordenadas polares.

% Script 6.6

theta = 0:2*pi/100:2*pi;

r = theta/(2*pi);

subplot(1,2,1);

polar(theta,r); % gráfico em coordenadas polares title('* E S P I R A L *');

subplot(1,2,2);

polar(theta,sin(2*theta).*cos(2*theta));

title('Rosa de 8 pétalas');

0 1 2 3 4 5 6 7 8 9

-200 -100 0 100 200 300 400 500 600

(13)

Figura 15 – Gráficos em coordenadas polares

7 Gráficos 3D

Há também uma grande variedade de comandos para gerar gráficos tridimensionais (veja a Figura 16 ).

Figura 16 - Comandos para gerar gráficos 3D 0.5

1

30

210

60

240

90

270 120

300 150

330

180 0

* E S P I R A L *

0.25 0.5

30

210

60

240

90

270 120

300 150

330

180 0

Rosa de 8 pétalas

(14)

Gráficos de linha

Para traçar gráficos curvilíneos 3D, utiliza-se o comando ou função plot3. No próximo exemplo, uma curva 3D em forma de hélice é gerada ( Figura 17 ), cujos pontos são definidos pela terna ordenada (sen(t), cos(t), t).

% Script 7.1

t = linspace(0,10*pi,200);

plot3(sin(t),cos(t),t);

xlabel('x = sen(t)');

ylabel('y = cos(t)');

zlabel('z = t');

grid on

Figura 17 – Hélice: curva paramétrica

Gráficos de superfície

O script abaixo gera a Figura 18 . Estude-o e verifique o efeito de cada comando.

% Script 7.2

x = -7.5:0.5:7.5; % vetor ou lista x y = -7.5:0.5:7.5; % vetor ou lista y

[X,Y] = meshgrid(x,y); % gera uma malha de pontos

R = sqrt(X.^2+Y.^2)+eps; % soma-se eps para evitar divisão por zero Z = sin(R)./R+1; % cálculo da coordenada Z

mesh(X,Y,Z); % gráfico em malha

hold on; % segura as saídas gráficas posteriores na janela atual pcolor(X,Y,Z); % provoca a aparição de uma malha colorida no domínio

-1

-0.5

0

0.5

1

-1 -0.5

0 0.5

1 0 10 20 30 40

x = sin(t) y = cos(t)

z = t

(15)

shading interp; % a cor é definida de acordo com a altura contour(X,Y,Z,20,'k'); % 20 curvas de nível em preto,

% escolhidas automaticamente colorbar; % apresenta uma escala colorida de valores hold off; % libera a janela gráfica

Figura 18 – Gráfico de superfície

Animação gráfica

O primeiro exemplo (script 7.3) mostra uma animação bidimensional.

Inicialmente, constrói-se uma sequência de 20 gráficos, que é armazenada em uma matriz M; em seguida, o comando movie exibe 5 vezes a sequência armazenada em M a uma taxa de repetição 10 quadros por segundo. Estude o script e verifique o efeito de cada comando.

% Script 7.3

x = -pi/2:.1:pi/2;

for c=1:20,

y = sin(2*x+c*pi/10);

plot(x,y,'LineWidth',18);

axis([-pi/2 pi/2 -1 1]);

M(c) = getframe;

end;

movie(M,5,10);

-10

-5

0

5

10

-10 -5 0 5 10

0 0.5 1 1.5 2

0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9

Referências

Documentos relacionados

próximos anos, temos somente 500 imóveis em SAD69, podendo definir na próxima edição da norma que os profissionais apresentem seus trabalhos em SIRGAS... 5) É fundamental que

- Para definir suas metas, foque no destino onde você quer chegar, não no meio para chegar lá;.. -Você deve separar suas metas em

O biomédico microscopista que está apto a ler e analisar o esfregaço sanguíneo e/ ou medular deverá descrever as características morfológicas das células

Esta especificação tem como objetivo estabelecer as características técnicas básicas para o fornecimento de ferramenta para instalação de espaçador de Baixa

Este parecer preliminar tem como objetivo repassar para os indígenas da Terra Indígena Baú os primeiros resultados referentes ao estudo de contaminação por mercúrio nos peixes e tra

Dois estudos clínicos controlados de 6 semanas (N = 671, randomizados), comparando a fluoxetina 20 mg e placebo, mostraram que a fluoxetina 20 mg em doses diárias é eficaz

O contribuinte obrigado à emissão de CF-e-SAT poderá optar por emitir NF-e (modelo 55) ou NFC-e (modelo 65), nas hipóteses em que a legislação prevê a emissão de Cupom Fiscal

 A adição de nistatina e cetoconazol em suas MCIs para biofilme fúngico em ambos os materiais resilientes e de clorexidina no Trusoft não interferiu com a