MATLAB - Matrix Laboratory Adaptado de Profa. Carla Salso Freitas e profa. Luciana Nedel Por Profa. Patrícia Jaques Gráficos planos 2D • O comando plot cria gráficos de x-y no plano; • Se x e y são vetores de mesmo tamanho, o comando plot(x,y) abre uma janela gráfica e desenha um gráfico x-y dos elementos de x versus os elementos de y. • Exemplo: – x=[-2 -1 0 1 2]; – y=x.^2; – plot(x,y) MATLAB - INF01040 - Profa. Patrícia Jaques 2 Gráficos planos 2D • Se "x" é um vetor, "plot(x)" produz um gráfico linear dos elementos de "x" versus o índice dos elementos de "x". Por exemplo, para plotar o vetor "x": x = [0.0 0.48 0.84 1.0 0.91 0.6 0.14]; plot(x) MATLAB - INF01040 - Profa. Patrícia Jaques 3 Gráficos planos 2D • O comando grid coloca uma grade de linhas sobre o gráfico atual. – – – – x = -1.5:0.01:1.5; y= exp(-x.^2); plot(x,y) grid MATLAB - INF01040 - Profa. Patrícia Jaques 4 + gráficos • Gráficos podem ter títulos, eixos rotulados e textos. Para isso usa-se os seguintes comandos que tem strings como argumentos: – – – – – title título do gráfico xlabel rótulo do eixo x ylabel rótulo do eixo y gtext texto posicionado interativamente (mouse ou setas) grid linhas de grade » title 'Título' » xlabel('x') » ylabel ('y') MATLAB - INF01040 - Profa. Patrícia Jaques 5 + gráficos Exemplo: x = 0:pi/100:2*pi; y = sin(x); plot(x,y); %o caracter \pi cria o símbolo xlabel('x = 0:2\pi'); ylabel('Seno de x'); title('Função Seno'); gtext ('y = sin(x)'); MATLAB - INF01040 - Profa. Patrícia Jaques 6 Gráficos planos 2D múltiplos • Fazer gráficos múltiplos em uma única janela. • Exemplo 1: – – – – – x=0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x); plot(x,y1,x,y2,x,y3) MATLAB - INF01040 - Profa. Patrícia Jaques 7 + gráficos • É possível alterar os caracteres de tipo de linha e de ponto usados como padrão. • Exemplo: – – – – x=0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x); • xlabel('x'), plot(x,y1,'--',x,y2,'*',x,y3,'+') Linha: tracejado Marcador: * Marcador: + MATLAB - INF01040 - Profa. Patrícia Jaques 8 + gráficos • • Tipos de linha: – – – – Tipos de Marcadores: – – – – – – – – – sólido (-), tracejado (--), pontilhado (:), traço e ponto (-.) • ponto (.), sinal de adição (+), asterisco (*), círculo (o), letra x (x) Quadrado (s) Triangulo (v) Losango (d) Hexágono (h) Cores: – – – – – – – Amarelo (y) Magenta (m) Verde (g) Azul (b) Preto (k) Vermelho (r) Ciano (c) MATLAB - INF01040 - Profa. Patrícia Jaques 9 + gráficos • Exemplo: x1 = 0:pi/100:2*pi; x2 = 0:pi/10:2*pi; plot(x1,sin(x1),'r:',x2,sin(x2), 'b+') Vermelho pontilhado Azul com sinal de + MATLAB - INF01040 - Profa. Patrícia Jaques 10 Gráficos planos 2D • O comando subplot pode ser usado para particionar a tela e permite a apresentação simultânea de vários gráficos não superpostos. • Exemplo: – ... MATLAB - INF01040 - Profa. Patrícia Jaques 11 Gráficos planos 2D – – – – – – – – – – x=0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(3*x); y4=sin(4*x)+cos(x); y5=cos(2*x)+sin(3*x); subplot(2,2,1), plot(y1) subplot(2,2,2), plot(y2) subplot(2,2,3), plot(y3) subplot(2,2,4), plot(y4) MATLAB - INF01040 - Profa. Patrícia Jaques 12 Gráficos planos 2D – – – – – – – – – – – x=0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(3*x); y4=sin(4*x)+cos(x); y5=cos(2*x)+sin(3*x); subplot(2,3,1), plot(y1) subplot(2,3,2), plot(y2) subplot(2,3,3), plot(y3) subplot(2,3,4), plot(y4) subplot(2,3,5), plot(y5) MATLAB - INF01040 - Profa. Patrícia Jaques 13 Estilos de linhas x = 0:0.05:1; subplot(2,2,1),plot(x,x.^2,'-') subplot(2,2,2),plot(x,x.^2,':') subplot(2,2,3),plot(x,x.^2,'-.') subplot(2,2,4),plot(x,x.^2,'--') Linha posiçã o coluna MATLAB - INF01040 - Profa. Patrícia Jaques 14 Estilos de símbolos x = 0:0.1:1; subplot(4,3,1),plot(x,x.^2,'.') subplot(4,3,2),plot(x,x.^2,'o') subplot(4,3,3),plot(x,x.^2,'x') subplot(4,3,4),plot(x,x.^2,'+') subplot(4,3,5),plot(x,x.^2,'*') subplot(4,3,6),plot(x,x.^2,'s') subplot(4,3,7),plot(x,x.^2,'d') subplot(4,3,8),plot(x,x.^2,'v') subplot(4,3,9),plot(x,x.^2,'^') subplot(4,3,10),plot(x,x.^2,'<') subplot(4,3,11),plot(x,x.^2,'p') subplot(4,3,12),plot(x,x.^2,'h') MATLAB - INF01040 - Profa. Patrícia Jaques 15 Gráficos – outros comandos para plotar • Comandos de plotar x=0:10; y=x.^2; – plot(x, y) – gera gráficos lineares – semilogx(x, y) – gráfico com escala linear para y e escala logarítmica para x • eixo x é log10 e o eixo y é linear – semilogy(x, y) – a escala logarítmica é para y • eixo x é linear e o eixo y é log10 – loglog(x, y) – escala logarítmica para ambos (x e y) • plota usando a escala log10xlog10 – bar(x,y) - mostra um gráfico de barras MATLAB - INF01040 - Profa. Patrícia Jaques 16 Gráficos em malhas 3D • É possível desenhar superfícies em malhas 3D com a função mesh. • O comando mesh(z) cria um desenho 3D em perspectiva dos elementos da matriz z. • A superfície da grade é definida pelas coordenadas z dos pontos, acima de uma grade retangular no plano x-y. MATLAB - INF01040 - Profa. Patrícia Jaques 17 Gráficos em malhas 3D • Para desenhar o gráfico de uma função z = f(x,y), utiliza-se o comando "meshgrid“ –dados dois vetores "k" e "w", contendo as coordenadas dos eixos x-y, a função "meshgrid" retorna duas matrizes "x" e "y" contendo uma "malha" de coordenadas necessária para a geração de superfícies [x,y] = meshgrid(-2:0.2:2,-2:0.2:2); z= x.*exp(-x.^2-y.^2); mesh(x,y,z); xlabel('x'); ylabel('y'); zlabel('z'); title('Gráfico 3D') Lembrete: exp(x)=ex e=2.718281828 2-4=1/24=1/16 MATLAB - INF01040 - Profa. Patrícia Jaques 18 • Pode-se, ainda, utilizar o comando contour que mostra a projeção da superfície acima do plano xy com 10 iso-linhas: [x,y] = meshgrid(-2:0.2:2,-2:0.2:2); z= x.*exp(-x.^2-y.^2); contour(z,10); xlabel('x'); ylabel('y'); zlabel('z'); title('Gráfico 3D') MATLAB - INF01040 - Profa. Patrícia Jaques 19 • Para preencher a superfície plotada, o MatLab oferece o comando surfc: [x,y] = meshgrid(-2:0.2:2,-2:0.2:2); z= x.*exp(-x.^2-y.^2); contour(z,10) surfc(x,y,z) xlabel('x'); ylabel('y'); zlabel('z'); title('Gráfico 3D') MATLAB - INF01040 - Profa. Patrícia Jaques 20 Gráficos em malhas 3D • Exemplo: – – – – – xx=-2:.1:2; yy=xx; [x,y]=meshgrid(xx,yy); z=exp(-x.^2-y.^2); mesh(z) • As primeiras linhas podem ser omitidas, se modificarmos a linha de meshgrid para: – [x,y]=meshgrid(-2:.1:2, -2:.1:2); MATLAB - INF01040 - Profa. Patrícia Jaques 21 Trabalho – enviar para [email protected] • MATLAB - INF01040 - Profa. Patrícia Jaques 22