Baixe o app para aproveitar ainda mais
Prévia do material em texto
1TP4 Aplicacionais para Ciências e Engenharia Aplicacionais para Ciências e Engenharia Aula 4 2TP4 Aplicacionais para Ciências e Engenharia Sumário • Gráficos – Gráficos 2D (cartesianos e de variável complexa) – Gráficos 3D (linhas e superfície) 3TP4 Aplicacionais para Ciências e Engenharia Gráficos 2D 4TP4 Aplicacionais para Ciências e Engenharia – A função plot() permite criar gráficos. Na sua forma mais simples temos: x=0:2*pi/359:2*pi; % Quantos pontos? y=sin(x); plot(y); – Para criarmos o gráfico de y=f(x) devemos fazer: plot(x,y); % numel(x)=numel(y) – … e para legendar os eixos e colocar um título: xlabel('x');ylabel('y=sin(x)'); title('Gráfico de sin(2*pi)') Criar um gráfico Neste caso temos o gráfico de sin(x), no intervalo [0,2π] em que o eixo das abcissas tem valores de 1 a 360 (índices do vetor y) 0 100 200 300 400 -1 -0.5 0 0.5 1 0 2 4 6 x -1 -0.5 0 0.5 1 Gráfico de sin(2*pi) 5TP4 Aplicacionais para Ciências e Engenharia Criar vários gráficos numa janela plot(x,sin(x),x,sin(x-pi/4),x,sin(x-pi/2)) legend('sin(x)','sin(x-pi/4)','sin(x-pi/2)’) % legenda grid on % coloca uma grelha no gráfico Neste caso adicionámos uma legenda para fácil identificação das curvas e uma grelha 0 1 2 3 4 5 6 7 -1 -0.5 0 0.5 1 sin(x) sin(x-pi/4) sin(x-pi/2) 6TP4 Aplicacionais para Ciências e Engenharia Especificação do tipo e cores das linhas 7TP4 Aplicacionais para Ciências e Engenharia Especificação do tipo e cores das linhas 8TP4 Aplicacionais para Ciências e Engenharia Especificação do tipo e cores das linhas 9TP4 Aplicacionais para Ciências e Engenharia Outras propriedades: ‒ FontSize Define o tamanho da letra no título, legenda e eixos ‒ LineWidth Define a espessura da linha ‒ MarkerEdgeColor Define a cor dos marcadores sem área definida ou do contorno dos marcadores com área definida ‒ MarkerFaceColor Define a cor do preenchimento dos marcadores com uma área definida ‒ MarkerSize Define o tamanho do marcador Especificação do tipo e cores das linhas 10TP4 Aplicacionais para Ciências e Engenharia Exemplo: Especificação do tipo e cores das linhas x=linspace(0,2*pi,20); plot(x,sin(x),'-.r*') hold on % Permite acrescentar mais gráficos na mesma janela plot(x,sin(x-pi/4),':bs') plot(x,sin(x-pi/2),'-mo',... % Permite continuar na linha 'LineWidth',2,... linha seguinte 'MarkerSize',10,... 'MarkerEdgeColor','k',... 'MarkerFaceColor',[.5 1 .6]) legend('sin(x)','sin(x-pi/4)',... 'sin(x-pi/2)','FontSize',15) hold off 0 1 2 3 4 5 6 -1 -0.5 0 0.5 1 sin(x) sin(x-pi/4) sin(x-pi/2) 11TP4 Aplicacionais para Ciências e Engenharia – A abertura de uma janela gráfica pode ser feita com a função plot() ou com outras funções que criam gráficos de outro tipo – O Matlab permite criar janelas “vazias”, e adicionar o(s) gráfico(s) a posteriori Exemplo: Criar várias janelas gráficas figure, figure, figure % São criadas 3 janelas gráficas % A última criada é a janela ativa figure(1) % A janela ativa passa a ser a 1 close(2) % Fecha a janela 2 close all % Fecha todas as janelas gráficas 12TP4 Aplicacionais para Ciências e Engenharia Subgráficos – A função subplot(m,n,p) permite criar uma janela gráfica numa configuração semelhante a uma matriz de linhas e colunas sendo que a posição p, neste caso, é obtida por linhas, ao contrário do que acontece numa matriz. Exemplo: x=linspace(-pi,pi); % 100 pontos subplot(2,3,1) % p=1 plot(x,sin(x)) subplot(2,3,4) % p=4 plot(x,cos(x)) subplot(2,3,2) % p=2 x=(-pi/2)+0.01:0.01:(pi/2)-0.01; plot(x,tan(x)) subplot(2,3,5) % p=5 x1=-pi+0.01:0.01:-0.01; x2=0.01:0.01:pi-0.01; plot(x1,cot(x1),x2,cot(x2)) subplot(2,3,3) % p=3 x1=-pi/2+0.01:0.01:pi/2-0.01; x2=pi/2+0.01:0.01:(3*pi/2)-0.01; plot(x1,sec(x1),x2,sec(x2)) subplot(2,3,6) % p=6 x1=-pi+0.01:0.01:-0.01; x2=0.01:0.01:pi-0.01; plot(x1,csc(x1),x2,csc(x2)) -2 0 2 -1 -0.5 0 0.5 1 -2 0 2 -1 -0.5 0 0.5 1 -2 0 2 -100 -50 0 50 100 -2 0 2 -100 -50 0 50 100 0 2 4 -100 -50 0 50 100 -2 0 2 -100 -50 0 50 100 p=2p=1 p=3 p=4 p=5 p=6 p=2p=1 p=3 p=4 p=5 p=6 13TP4 Aplicacionais para Ciências e Engenharia Limites e marcas dos eixos ‒ O Matlab ajusta os limites dos eixos e marcas de forma a exibir o gráfico de forma clara ‒ Também permite a sua personalização através de funções dedicadas: axis(), xlim(), ylim() e zlim() para gráficos 3D x=(-pi/2)+0.005:0.01:(pi/2)-0.005; plot(x,tan(x)) % Gráfico 1 axis([-pi/2,pi/2,-3,3]) % xmin,xmax,ymin,ymax % Gráfico 2 axis auto % repõe formatação anterior grid on % coloca a grelha grid off % retira a grelha axis off % elimina os eixos axis on % repõe os eixos axis square % eixos x e y com o mesmo tamanho axis equal % eixos x e y com a mesma escala axis auto normal % repõe formatação original xlim([xmin xmax]) ylim([ymin ymax]) zlim([zmin zmax]) % alteram os eixos x, y e z -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 -200 -150 -100 -50 0 50 100 150 200 -1.5 -1 -0.5 0 0.5 1 1.5 -3 -2 -1 0 1 2 3 Gráfico 1 Gráfico 2 14TP4 Aplicacionais para Ciências e Engenharia Números complexos • Um número complexo tem a forma a+ib ou a+jb a parte real b parte imaginária i,j unidade imaginária (sqrt(-1)) • Pode ser representado num plano complexo por um ponto x=1; y=1 z=x+j*y; plot(x,y,'xk') hold on plot(z,'or') % marca o mesmo ponto no plano 15TP4 Aplicacionais para Ciências e Engenharia Funções matlab associadas a complexos – real() Parte real do número complexo – imag() Parte imaginária do número complexo – angle() Ângulo (fase) do número complexo – abs() Módulo do número complexo (mesmo que distância de um ponto ao centro do plano complexo) z=3+4*i; a=real(z); b=imag(z); fi=angle(z); m=abs(z); 16TP4 Aplicacionais para Ciências e Engenharia A formula de Euler – A fórmula de Euler dada por: é uma função periódica com período 2 – Facilita a representação de círculos (basta variar o ângulo num período completo da função) – O cálculo de distâncias entre pontos no plano complexo é “mais fácil” do que no plano cartesiano 17TP4 Aplicacionais para Ciências e Engenharia Gráficos de variável complexa omega=linspace(0,2*pi) c1=-1-i; % centros dos círculos c2=2+3i; z1=2*exp(i*omega)+c1; % 2 corresponde ao raio do círculo z2=exp(i*omega)+c2; plot(z1,'r') % ou plot(real(z1),imag(z1),'r') hold on plot(z2,'b') % plot(z1,z2) não é correto plot(-1,-1,'*k',2,3,'*k',[-1 2],[-1 3],'-k') % plot dos centros e reta que une os centros text(1,1,'\leftarrow Distância') % ilustração no gráfico %texto numa dada posição grid,axis equal distancia=abs(c1-c2) % Em coordenadas cartesianas mais trabalhoso: % distancia=sqrt((x2-x1)^2+(y2-y1)^2) distancia = 5 18TP4 Aplicacionais para Ciências e Engenharia Gráficos de variável complexa -4 -2 0 2 4 -2 -1 0 1 2 3 Distância 19TP4 Aplicacionais para Ciências e Engenharia Outro tipo de gráficos ‒ O Matlab permite criar vários tipos de gráficos para aplicações diversas ‒ Pode verificar todos os tipos se procurar no help do Matlab por: “Types of MATLAB Plots” Podemos encontrar gráficos de linhas, histogramas, barras, contorno, superfície, … 20TP4 Aplicacionais para Ciências e Engenharia Gráfico stairs • O tipo de gráfico deve ser criteriosamente escolhido em função das características da grandeza que se pretende representar Exemplo1: Para fazer o gráfico de uma função de variável continua (caso do seno e do co- seno) devemos usar o plot(). O plot() liga pontos seguidos com segmentos de reta o que permite, mesmo com um número de pontos relativamente baixo, obter um gráfico de boa qualidade Para obter gráficos em que a função é discreta por natureza (só se conhece a intervalos de tempo fixos) o gráfico que melhor se ajusta é obtido com a função stairs() A sua utilização é em tudo semelhante à que vimos para o plot() Nota: Recomenda-se aos alunos que vejam no help do Matlab esta função 0 1 2 3 4 5 6 -1 -0.5 0 0.5 1 21TP4 Aplicacionais para Ciências e Engenharia Gráfico stairs Exemplo2: Podemostambém fazer vários gráficos usando matrizes para valores de abcissas e ordenadas, desde que o número de pontos seja o mesmo x1=linspace(0,2*pi)'; x2=linspace(0,3*pi)'; x3=linspace(0,4*pi)'; %100 pontos em cada gráfico X=[x1,x2,x3]; % Valores por colunas Y=[4*cos(x1),2*sin(x1),... x3.*cos(2*x3)]; stairs(X,Y),grid 0 5 10 15 -15 -10 -5 0 5 10 15 22TP4 Aplicacionais para Ciências e Engenharia -0.4 -0.2 0 0.2 0.4 0.6 0 10 20 30 40 50 Gráfico stem • Outro gráfico especialmente indicado para dados discretos, como as sequências de valores, é o stem() Exemplo: n=1:50; un=(-1).^(n+1)./(n+sqrt(n)); stem(n,un,'r'); 23TP4 Aplicacionais para Ciências e Engenharia Gráfico semilogx Existem gráficos que numa escala linear apresentam uma variação (por década*) cada vez menor (logarítmica). Nestes casos devemos usar no gráfico uma escala logarítmica para o eixo dos xx Exemplo: x=0:100:10000; x(1)=1; % Como log(0)=-Inf este ponto não aparece no gráfico. Assim força-se um ponto em y=0 y=log(x); % ou log10 plot(x,y,'*r'),grid figure semilogx(x,y),grid * Uma década corresponde a uma relação de valores igual a 10 24TP4 Aplicacionais para Ciências e Engenharia Gráfico semilogy … também existem gráficos que apresentam uma variação (por década) cada vez maior. Nestes casos devemos usar no gráfico uma escala logarítmica para o eixo dos yy Exemplo: x=0:1:10; y=exp(x); % ou 10.^x plot(x,y,'*r'),grid figure semilogy(x,y,'r'),grid 0 2 4 6 8 10 0 0.5 1 1.5 2 2.5 104 25TP4 Aplicacionais para Ciências e Engenharia Gráfico loglog … e ainda existem gráficos que apresentam uma gama muito grande de valores quer no eixo dos xx quer no eixo dos yy. Neste caso é conveniente usar uma escala logarítmica em ambos os eixos Exemplo: x=logspace(-1,3,20); y=exp(x); loglog(x,y,'-s') grid on % Recomenda-se aos alunos que consultem o help do Matlab para a função logspace 10-1 100 101 102 103 100 10100 10200 10300 26TP4 Aplicacionais para Ciências e Engenharia Gráfico em décibeis (dBs) ‒ Existem várias grandezas que são expressas em escalas logarítmicas: o decibel (dB), o neper (Np), a escala de Richter, o pH, entre muitas outras ‒ O dB (décima do Bell) é uma medida da relação entre dois valores, usado na eletrónica, telecomunicações e na física (um dos exemplos é a medida da resposta do ouvido humano à intensidade sonora que é medido em dBs) ‒ Uma das grandes vantagens em usar uma escala em dBs é que a multiplicação/divisão de grandezas passa a ser feita com somas/diferenças em dBs 27TP4 Aplicacionais para Ciências e Engenharia Gráfico em décibeis (dBs) 36 1010,10 1 1 )( i iH Exemplo:% Espaçamento linear wlin = linspace(10,1e6,10); Hlin = 1./(1 + wlin*1e-3*i); Amplin = 20*log10(abs(Hlin)); semilogx(wlin,Amplin,'-b*'); hold on % Espaçamento logarítmico wlog = logspace(1,6,10); Hlog = 1./(1 + wlog*1e-3*i); Amplog = 20*log10(abs(Hlog)); semilogx (wlog,Amplog,'-ro'); axis([10 1e6 -60 0]); grid on legend('linspace','logspace') xlabel('\Omega (rad/s)') ylabel('Atenuação (dB)') 28TP4 Aplicacionais para Ciências e Engenharia Gráfico em décibeis (dBs) 101 102 103 104 105 106 (rad/s) -60 -50 -40 -30 -20 -10 0 linspace logspace 29TP4 Aplicacionais para Ciências e Engenharia Gráficos 3D 30TP4 Aplicacionais para Ciências e Engenharia Gráfico plot3 • Os gráficos de linhas em 3D seguem todas as regras dos 2D • Múltiplos gráficos podem combinar matrizes e vetores nas coordenadas (pelo menos uma coordenada tem de ser uma matriz) Exemplo: t = 0:pi/500:pi; X(1,:) = sin(t).*cos(10*t); X(2,:) = sin(t).*cos(12*t); Y(1,:) = sin(t).*sin(10*t); Y(2,:) = sin(t).*sin(12*t); Z=cos(t); plot3(X,Y,Z),axis off 31TP4 Aplicacionais para Ciências e Engenharia Gráfico stem3 t=linspace(0,2*pi) % Gera t com 100 valores X=[sin(t);4*sin(t)]; Y=[cos(t);4*cos(t)]; stem3(X,Y,2*ones(2,100)); axis equal 32TP4 Aplicacionais para Ciências e Engenharia Gráficos de superfície • Gráficos de superfície são gráficos de funções matemáticas representados num espaço tri- dimensional • Representam superfícies que podem ser fechadas, isto é, podem também representar volumes • Os gráficos de superfície mais comuns podem ser criados pelas funções surf() e mesh() • Um exemplo ilustrativo é o próprio ícone do Matlab 33TP4 Aplicacionais para Ciências e Engenharia Gráficos de superfície • A criação de um gráfico de superfície não é possível sem a correta utilização da função meshgrid() • Para uma função , devemos usar: [X,Y]=meshgrid(x,y) onde x y são vetores e X Y são matrizes que definem uma grelha sobre a qual a função é avaliada (plano X-Y) • X é uma matriz em que cada linha é uma cópia de x • Y é uma matriz em que cada coluna é uma cópia de y • A grelha representada pelas coordenadas X e Y tem um nº de linhas igual a length(y) e um nº de colunas igual a length(x) 34TP4 Aplicacionais para Ciências e Engenharia Gráficos de superfície Exemplo: x=1:8; y=1:6; [X,Y]=meshgrid(x,y); plot(X,Y,'or'),grid xlabel('\bfX') ylabel('\bfY') disp(X) disp(Y) 1 2 3 4 5 6 7 8 X 1 2 3 4 5 6 35TP4 Aplicacionais para Ciências e Engenharia Gráfico surf Exemplo: Gráfico de em que x e y são representados por 51 pontos, ambos no intervalo x=linspace(-3,3,51); y=linspace(-3,3,51); [X,Y]=meshgrid(x,y); % Cálculo da função exp1=-((X+1).^2 + (Y+1).^2); exp2=-5*((X-1).^2 +(Y-1).^2); fxy=2*exp(exp1)+exp(exp2); % Gráfico de superfície surf(X,Y,fxy) axis tight % Ajusta os eixos aos limites de x,y,fxy 36TP4 Aplicacionais para Ciências e Engenharia Gráfico surf Notas: − Em qualquer janela gráfica, as propriedades dos gráficos produzidos podem sempre ser alteradas − Sugere-se que, após rotação, tentem obter uma figura semelhante à mostrada ao lado − Estas alterações podem ser adicionadas através de: colormap jet colorbar 37TP4 Aplicacionais para Ciências e Engenharia Gráfico surf • Podemos ainda alterar o tipo de preenchimento das áreas da superfície do gráfico: shading flat shading interp shading faceted 38TP4 Aplicacionais para Ciências e Engenharia Gráfico mesh • A função mesh() é em tudo semelhante à função surf(), sem o preenchimento das áreas da superfície mesh(X,Y,fxy) axis tight colormap jet box on ax=gca; %returns the current axes or chart for the current figure ax.BoxStyle='full' 0.5 -3 2 1 -2 1.5 -1 00 1 -22 3 % current axes 39TP4 Aplicacionais para Ciências e Engenharia Gráfico pcolor • A função pcolor() cria um gráfico de pseudo cor com informação dos valores da função através de cores z=peaks; % Função implicita no Matlab surf(z) axis off z=peaks; pcolor(z) shading interp axis off colorbar 40TP4 Aplicacionais para Ciências e Engenharia Gráfico contour • A função contour() cria um gráfico de contorno planar (curvas de nível ou cortes) com informação dos valores da função através de cores z=peaks; contour(z,20) shading interp axis off colorbar 41TP4 Aplicacionais para Ciências e Engenharia Sobreposição de gráficos • Podemos juntar gráficos de contorno com gráficos de pseudo cor e legendar os contornos para uma mais fácil interpretação z=peaks; pcolor(z) shading interp hold on [c,h]=contour(z,10,'k'); % 10 linhas de contorno clabel(c,h) %Legenda contorno axis image %same length; axes box tightly axis off
Compartilhar