Upload
internet
View
107
Download
0
Embed Size (px)
Citation preview
Introdução ao MATLAB 5.3 para Hidrólogos
Aula 03 – Scripts, funções e GráficosProgramando e plotando no MATLAB
Porto Alegre, setembro de 2005
Carlos Ruberto Fragoso Júnior
Christopher Freire Souza
Aula 03• Scripts
• Funções
• Linguagem de programação
• Gráficos
• 2D
• 3D
• Animação
Aula 03
Scripts
Aula 03
• Scripts files – Script é um m-file com um conjunto de
comandos do MATLAB dentro dele.– Para executar basta digitar o nome do arquivo
(sem a extensão .m).– É equivalente a digitar todos os comandos na
tela principal, só que armazenado em um arquivo.
– Trabalha com variáveis globais (apresentadas no diretório de trabalho)
Aula 03
• Exemplo de um script
Vamos escrever um script para resolver o seguinte sistema linear de equações:
5
3
2
x
x
x
r31r2
1r263
rr25
3
2
1
A.x=b, onde A depende de uma variável r.
Aula 03
• Executando o script no MATLAB
>> r = 1
r =
1
>> solvex
det_A =
64
x =
-0.0312 0.2344 1.6875
Os valores do “det_A” e “x" aparecem na tela porque não tem ponto e virgula no final da linha correspondente
• Cuidados que se deve ter: – NUNCA salve o script com o mesmo nome de
uma variável nele digitada.– O nome do arquivo script deve iniciar com uma
letra.– Seja cuidadoso com os nomes das variáveis
digitadas no script (todas essas variáveis são gravadas no diretório de trabalho)
Exercício 1A equação de uma uma reta é y = mx+b, onde m e
b são constantes compute os valores de y para os seguintes valores de x:
x = 0,1.5,3,4,5,7,9,10
Exercício 2 Crie um vetor t com 10 elementos de: 1,2,...,10.
Depois compute os seguintes valores:x = t.sen(t)y = (t-1)/(t+1)z = sen(t2)/t2
Aula 03
Funções
Aula 03
• Dicas para criação de funções – Crie uma estrutura lógica e pense na seqüência
computacional antes de escrever o código. Escreva isso em um papel!!!
– Defina as variáveis de entrada e saída.– Traduza o que você escreveu no papel para o MATLAB.– Defina nomes lógicos para suas variáveis e funções.– Escreva o máximo de comentários possíveis no código.– Quebre grandes blocos computacionais e escreva em
função separadas.– Check erros e a saída com mensagens de erros e use o
artifício do “;” para verificar os passos de cálculo.
• Cuidados que se deve ter: – O termo de definição deve ser digitado com letra
minúscula (“function” e não “Function”) .– Linhas comentadas começam com “%”, podendo
ser colocado em qualquer lugar. Todas as linhas comentadas imediatamente após o termo de definição são mostradas no MATLAB help.
– Uma simples variável de saída não precisa ser fechada por colchetes.
– O nome das variáveis de entrada e de saída na linha do termo de definição são variáveis locais.
• Para executar uma funçãoConsidere uma função, cuja a linha de definição é a seguinte:
function [rho,H,F] = motion(x,y,t);
>> [r,angmom,force] = motion(xt,yt,time);
>> [r,h,f] = motion(rx,ry,[0:100]);
>> [r,h,f] = motion(2,3.5,0.001);
>> [radius,h] = motion(rx,ry);
>> motion(xt,yt,t);
As variáveis xt, yt e time devem ser definidas antes de executar o comando.As variáveis rx e ry devem ser definidas antes de executar o comando e t é especificada.Todas as variáveis são especificadas.
A terceira variável de entrada tem que ser especificada dentro da função. A terceira variável e saída não é disponível.
Nenhuma variável de saída fica disponível.
function [det_A,x]=solvex(r)% SOLVEX Resolve um sistema de equações lineares de um matriz 3x3% com parâmetro r.% Para chamar esta função, digite:% [det_A,x] = solvex(r)% r é a entrada e det_A e x são as saídas
A = [5 2*r r; 3 6 2*r-1; 2 r-1 3*r]b = [2;3;5];det_A = det(A);x = A\b;
>> [det_A,y] = solvex(1);
>> det_A
ans =
64
>> y
ans =
-0.0312
0.2344
1.6875
• Executando uma função dentro de outra
function [det_A,x]=solvex(r)% SOLVEX Resolve um sistema de equações lineares de um matriz 3x3% com parâmetro r.% Para chamar esta função, digite:% [det_A,x] = solvex(r)% r é a entrada e det_A e x são as saídas
A = [5 2*r r; 3 6 2*r-1; 2 r-1 3*r]b = [2;3;5];det_A = det(A);x = A\b; A função “det” é chamada
dentro da função solvex. Porém, quando o nome da função é dinâmico é feito de forma diferente (use “feval”).
Aula 03
• Funções (function files) – funções são m-files contendo um conjunto de
comandos do MATLAB dentro dele, como um script, só que todas as variáveis são locais e não globais.
– São como programas ou subrotinas no Fortran.– A 1ª linha do arquivo começa definido as
variáveis de entradas e de saídas, e o nome da função.
– O nome da função deve ser o mesmo nome do arquivo a ser salvo.
Aula 03
• Macetes – pcode nomedoarquivo – proteger o direito de
uso do código.– profile – avalia a performance das funções.
profile on
[det_A,x] = solvex(r)
profile report
• Exercício 3Todos os pontos com coordenadas x = r.cosө,
y = r.senө, sendo r uma constante, satisfazem a equação x2 + y2 = r. Crie um vetor coluna:
ө = 0,π/4, π/2, 3π/4, π e 5π/4E calcule as coordenadas x e y em função do
raio r.
Aula 03
Linguagem de Programação
Aula 03
• Linguagem de Programação – São usadas para controlar o fluxo das operações.– Tipos:
(a) “for” e “while” – para “loops”(b) “if-elseif-else” – estrutura condicional simples(c) “switch-case-otherwise” – estrutura condicional
avançada
– Todos esses controladores de fluxo devem terminar com “end”.
Aula 03
• Linguagem de Programação – São usadas para controlar o fluxo das
operações.– Tipos:
(a) “for” e “while” – para “loops”(b) “if-elseif-else” – estrutura condicional simples(c) “switch-case-otherwise” – estrutura
condicional avançada
Aula 03
• Fazendo “loops” – “for” – Um “for” é usado para repetir uma operação ou um
grupo de operações para um número fixo de vezes.
% Exemplofor m=1:100 num = 1/(m+1)end
% Exemplofor n = 100:-2:0, k=1/(exp(n)), end
Aula 03
• Condicional simples – “if-elseif-else”– Um “while” é usado para repetir uma operação ou um
grupo de operações para um número indefinido de vezes até que a condição especificada pelo “while” seja satisfeita.
% Exemplonum = 1; i = 1;while num<10000 num = 2^i; v = [i; num]; i = i + 1;end
Aula 03
• Condicional simples – “if-elseif-else”– Cria blocos condicionais.
% Exemploi = 6; j = 21;if i > 5 k = i;elseif (i > 1) & (j == 20) k = 5*i + jelse k = 1;end
Aula 03
• Condicional avançado – “switch-case-otherwise”– Cria blocos condicionais. Uma variável é
usada como um dispositivo de direcionamento (switch), onde cada valor dessa variável direciona para um caso (case).
% Exemplo 1flag = 1;switch flagcase 1 “1º bloco computacional”case 2 “2º bloco computacional”otherwise “último bloco computacional”end
Aula 03
• Macetes – break – dentro de um “for” ou “while”, termina a
execução de um loop.– error(‘mensagem’) – dentro de uma função ou
script, sai da execução da rotina e mostra uma mensagem de erro.
– return - dentro de uma função ou script, sai da execução da rotina.
Aula 03
• Exemplos - break
% Exemplo 1u = [2 4 8 4 -1 2}; v = u;for i = length(v) if u(i) < 0; % check para u negativo break % termina a execução do loop end a = a + v(i)end
Aula 03
• Exemplos - error
function c = crossprod(a,b)% Cálcula o prod. Escalar de dois vetoresif nargin ~= 2 % se não for 2 variáveis de entrada
error('São necessárias duas variáveis de entrada') endif length(a) == 3 & length(b) == 3 % começa o cálculo c = cross(a,b);else
error('Os vetores devem ter 3 dimensões') end
Aula 03
• Exemplos - return
x = exp(sqrt(163))n = input('Entre com o número max.de iterações')while n >= 1 if n <=0 return end x = log(x) n = n - 1;end
Aula 03
• Outros macetes – input(‘mensagem’, opção) – mostra um texto
na tela e espera pelo o usuário dá uma entrada no teclado.
– menu(‘Título’,‘opção1’, ‘opção2’,...) – cria um menu na tela e lista as opções no menu.
– pause – pausa a execução da rotina e espera um sinal do usuário ou pausa um determinado tempo (“pause(n)”).
Aula 03
Arquivos de entrada e saída
Aula 03
• Entrada e Saída – O MATLAB possui algumas funções para ler e
escrever dados em arquivos do tipo binário ou ASCII formatados. As funções são:
– fopen: abre um arquivo existente ou cria um novo arquivo
– fclose: fecha um arquivo aberto
– fwrite: escreve uma informação binário para um arquivo
– fread: ler uma informação binário de um arquivo
– fscanf: ler uma informação formatada de um arquivo
– fprintf: escreve uma informação formatada para um arquivo
Formato Descrição%c Simples caracter
%d Notação decimal
%e Notação exponecial (usando “e” minúsculo )
%E Notação exponecial (usando “e” maiúsculo )
%f Notação fixando ponto
%g O mais compactado de %e ou %f
%o Notação Octal
%s Grupos de caracteres
%x Notação Hexadecimal
• Formatação de arquivos
Exercício 1Gerar e escrever em um arquivo ASCII uma
tabela de conversão de temperatura de Fahrenheit para Celsius. Sabendo que:
F = -40:5:100C = (F-32)*5/9
Exercício 2 Ler os dados de temperatura do arquivo gerado
em um matriz de temperatura.
Aula 03
• Exemplos – Escrever em um arquivo
F = -40:5:100;C = (F-32)*5/9;t = [F;C];fid = fopen('temperatura.tab','w');fprintf(fid,' Tabela de Temperatura\n');fprintf(fid,'~~~~~~~~~~~~~~~~~~~~~~~~\n');fprintf(fid,'Fahrenheit Celsius\n');fprintf(fid,' %4i %8.2f\n',t);fclose(fid);
Aula 03
• Exemplos – Ler um arquivo
fid = fopen('temperatura.tab');lixo=fscanf(fid,'%25c',[1 1])lixo=fscanf(fid,'%25c',[1 1])lixo=fscanf(fid,'%20c',[1 1])temp = fscanf(fid,'%i %f',[2 inf])fclose(fid);
Aula 03
Gráficos
Aula 03
• Gráficos – Boas ferramentas de visualização;– Gráficos 2D, 3D e animações;– O especial sobre a parte gráfica do MATLAB
é o fácil uso e expansibilidade.
Aula 03
• Plots 2D – O comando básico e talvez o mais proveitoso
comando para produzir um gráfico em 2 dimensões é:
plot(xvalores,yvalores,’estilo-opções’)
Aula 03
• Opções de estilo
Cor linha Descriçãoy (amarelo) - (sólido) + (sinal de soma)
m (margenta) -- (tracejado) o (cículo)
c (ciano) : (pontinhado) * (asterisco)
r (vermelho) -. (tracejado-potinhado) x (sinal x)
g (verde) . (ponto)
b (azul) ^ (triangulo)
w (branco) s (quadrado)
k (preto) d (diamante), etc
Aula 03
• Outras opções do comando “axis” – axis(‘equal’) – coloca uma escala igual em ambos os
eixos– axis(‘square’) – transforma a área de plotagem
retangular em um quadrado– axis(‘normal’) – restaura os eixos para valores padrões– axis(‘off’) – remove a área de plotagem e legendas
Aula 03
• Controle do eixo – Você pode mudar os limites dos eixos com o
comando “axis”
axis([xmin xmax ymin ymax])
Aula 03
• Inserindo textos nos gráficos – xlabel(‘eixo x’) – legenda do eixo x– ylabel(‘eixo y’) – legenda do eixo y– title(‘título’) – título do gráfico– text(2,6,‘texto’) – escreve ‘texto’ na
coordenada (2,6)– legend(‘texto1’, ‘texto2’, ...)
Aula 03
• Sobreposição de gráficos – Usando o comando plot
– Usando o comando “hold on”
plot(x1,y1,‘estilo1’,x2,y2,‘estilo2’)
plot(x1,y1,‘estilo1’)hold on
plot(x2,y2, ‘estilo2’)
Aula 03
• Exercício – Plotar a função seno em conjunto com duas
funções de aproximação por série de Taylor (1ª e 3ª ordem). As funções são:
y1 = sen(t)y2 = ty3 = t-t3/3!+t5/5!
Usando as funções xlabel, ylabel, axis, gtext, hold on, plot...
Aula 03
• Exercício (solução)
x=linspace(0,2*pi,100);y1=sin(x);plot(x,y1)hold ony2=x;plot(x,y2,‘--’)y3=x-(x.^3)/6+(x.^5)/120;plot(x,y3,‘o’)axis([0 5 -1 5])Hold off
Aula 03
• Gráficos especiais em 2D – fplot
0 5 10 15 20 25 30-30
-20
-10
0
10
20
30
» fplot('x.*sin(x)',[0 10*pi])
Aula 03
• Gráficos especiais em 2D – semilogx
» t=linspace(0,2*pi,200);
» x=exp(-t);
» y=t;
» semilogx(x,y), grid
10-3
10-2
10-1
100
0
1
2
3
4
5
6
7
Aula 03
• Gráficos especiais em 2D – semilogy
» t=linspace(0,2*pi,200);
» semilogy(t,exp(t)), grid
0 1 2 3 4 5 6 710
0
101
102
103
Aula 03
• Gráficos especiais em 2D – loglog
» t=linspace(0,2*pi,200);
» x=exp(t);
» y=100+exp(2*t);
» loglog(x,y), grid
100
101
102
103
102
103
104
105
106
Aula 03
• Gráficos especiais em 2D – polar
» t=linspace(0,2*pi,200);» r=sqrt(abs(2*sin(5*t)));» polar(t,r)
0.5
1
1.5
30
210
60
240
90
270
120
300
150
330
180 0
Aula 03
• Gráficos especiais em 2D – fill
» t=linspace(0,2*pi,200);» r=sqrt(abs(2*sin(5*t)));» x=r.*cos(t);» y=r.*sin(t);» fill(x,y,'k')» axis(‘equal')
-1.5 -1 -0.5 0 0.5 1 1.5
-1
-0.5
0
0.5
1
Aula 03
• Gráficos especiais em 2D – bar
» t=linspace(0,2*pi,200);» r=sqrt(abs(2*sin(5*t)));» y=r.*sin(t);» bar(t,y)» axis([0 pi 0 inf])
0 0.5 1 1.5 2 2.5 30
0.2
0.4
0.6
0.8
1
1.2
1.4
Aula 03
• Gráficos especiais em 2D – errorbar
» x=0:0.1:2;» aprx2=x-x.^3/6;» er=aprx2-sin(x);» errorbar(x,aprx2,er)
-0.5 0 0.5 1 1.5 2 2.50
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
• Gráficos especiais em 2D – barh
» cont=char('Asia','Europa','Africa','America do Norte', 'America do Sul');» pop=[3332;696;694;437;307];» barh(pop)» for i=1:5,gtext(cont(i,:));end» xlabel('Polulação em Milhões')» title('População do Mundo (1992)')
0 500 1000 1500 2000 2500 3000 3500
1
2
3
4
5
Asia
Europa
Africa
America do Norte
America do Sul
Polulação em Milhões
População do Mundo (1992)
• Gráficos especiais em 2D – plotyy
» x=1:0.1:10;» y1=exp(-x).*sin(x);» y2=exp(x);» Ax=plotyy(x,y1,x,y2)
Ax =
72.0021 74.0096
» hy1=get(Ax(1),'ylabel');» hy2=get(Ax(2),'ylabel');» set(hy1,'string','e^-x*sin(x)');» set(hy2,'string','e^x'); 1 2 3 4 5 6 7 8 9 10
-0.1
0
0.1
0.2
0.3
0.4
e- x*si
n(x)
1 2 3 4 5 6 7 8 9 100
0.5
1
1.5
2
2.5x 10
4
ex
• Gráficos especiais em 2D – area
» x=linspace(-3*pi,3*pi,100);» y=-sin(x)./x;» area(x,y)» xlabel('x')» ylabel('sin(x)./x')» hold on» x1=x(46:55);» y1=y(46:55);» area(x1,y1,'facecolor','y')
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
x
sin(
x)./
x
• Gráficos especiais em 2D – pie
» cont=char('Asia','Europa','Africa','America do Norte', 'America do Sul');» pop=[3332;696;694;437;307];» pie(pop)» for i=1:5,gtext(cont(i,:));end
61%
13%
13%
8%
6%
Asia Europa
Africa
America do Norte
America do Sul
• Gráficos especiais em 2D – hist
» y=randn(50,1);» hist(y)
-2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.50
1
2
3
4
5
6
7
8
9
• Gráficos especiais em 2D – stairs
» t=linspace(0,2*pi,200);» r=sqrt(abs(2*sin(5*t)));» y=r.*sin(t);» stairs(t,y)» axis([0 pi 0 inf])
0 0.5 1 1.5 2 2.5 30
0.2
0.4
0.6
0.8
1
1.2
1.4
• Gráficos especiais em 2D – stem
» t=linspace(0,2*pi,100);» f=exp(-0.2*t).*sin(t);» stem(t,f)
0 1 2 3 4 5 6 7-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
• Gráficos especiais em 2D – compass
» zx=cos(th);» zy=sin(th);» z=zx+i*zy;» compass(z)
0.2
0.4
0.6
0.8
1
30
210
60
240
90
270
120
300
150
330
180 0
• Gráficos especiais em 2D – Comet (faz uma pequena animação)
» q=linspace(0,10*pi,200);» y=q.*sin(q);» comet(q,y)
• Gráficos especiais em 2D – contour
» r=-5:0.2:5;» [X,Y]=meshgrid(r,r);» Z=-0.5*X.^2 + X.*Y + Y.^2;» cs=contour(X,Y,Z);» clabel(cs)
-5 -4 -3 -2 -1 0 1 2 3 4 5-5
-4
-3
-2
-1
0
1
2
3
4
5
-10
-10
0
0
10
10
20
20
30
30
• Gráficos especiais em 2D – quiver
» r=-2:0.2:2;» [X,Y]=meshgrid(r,r);» Z=-0.5*X.^2 + X.*Y + Y.^2;» [dx,dy]=gradient(Z,.2,.2);» quiver(X,Y,dx,dy,2);
-2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5-2.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
• Gráficos especiais em 2D – quiver
» r=-2:0.2:2;» [X,Y]=meshgrid(r,r);» Z=-0.5*X.^2 + X.*Y + Y.^2;» pcolor(Z)» axis('off')» shading interp
Aula 03
• Gráficos Múltiplos – Se vc quer fazer alguns gráficos e colocá-los
lado a lado (sem sobrepor gráficos), use o comando “subplot”:
subplot(m,n,p)Dividi a janela em m x n sub-janelas, e plota
o gráfico na sub-janela p.
Aula 03
• Plots 3D – O comando básico para produzir uma curva
em 3 dimensões é:
plot3(x,y,z,’estilo-opções’)
Use agora o comando “zlabel”
Aula 03
• Ângulo de visão – view(azimute,elavação) –
onde o azimute é em graus partir do eixo y sendo o sentido anti-horário o sentido positivo, e a elevação em graus é o ângulo medido a partir do plano x-y.
– rotate3d on – mais versátil e de fácil uso, você mesmo manipula a melhor visão.
Aula 03
• Plotando superfícies – Os comandos básicos para plotar uma
superfície são: mesh e surf.
– Utilize o comando “meshgrid” para gerar uma grade de pontos quadrangular.
mesh(X,Y,Z)surf(X,Y,Z)
• Superfícies em 3D – mesh e surf
>> x=linspace(-3,3,100);>> [X,Y]=meshgrid(x,x);>> Z=X.*Y.*(X.^2-Y.^2)./((X.^2+Y.^2));>> mesh(X,Y,Z)>> surf(X,Y,Z)>> mesh(X,Y,Z)
• Especiais em 3D – fill3
» X=[0 0 0 0;1 1 -1 1;1 -1 -1 1];» Y=[0 0 0 0; 4 4 4 4; 4 4 4 4];» Z=[0 0 0 0; 1 1 -1 -1; -1 1 1 -1];» fill3(X,Y,Z,rand(3,4))» view(120,30)
-1
-0.5
0
0.5
1
01
23
4
-1
-0.5
0
0.5
1
• Especiais em 3D – contour3
» r=linspace(-3,3,50);» [x,y]=meshgrid(r,r);» z=-5./(1+x.^2+y.^2);» contour3(x,y,z)
-3-2
-10
12
3
-2
0
2
-5
-4
-3
-2
-1
0
• Especiais em 3D – contour3
» r=linspace(-3,3,50);» [x,y]=meshgrid(r,r);» z=-5./(1+x.^2+y.^2);» contour3(x,y,z)
-3-2
-10
12
3
-2
0
2
-5
-4
-3
-2
-1
0
• Especiais em 3D – surfc
» u=-5:0.2:5;» [X,Y]=meshgrid(u,u);» Z = cos(X).*cos(Y).*exp(-sqrt(X.^2+Y.^2)/4);» surfc(X,Y,Z)» axis('off')
• Especiais em 3D – surfl
» u=-5:0.2:5;» [X,Y]=meshgrid(u,u);» Z = cos(X).*cos(Y).*exp(-sqrt(X.^2+Y.^2)/4);» surfl(X,Y,Z)» shading interp» colormap hot
• Especiais em 3D – meshz
» x=linspace(-3,3,50);» y=x;» [x,y]=meshgrid(x,y);» z=-5./(1+x.^2+y.^2);» meshz(x,y,z)
• Especiais em 3D – waterfall
» x=linspace(-3,3,50);» y=x;» [x,y]=meshgrid(x,y);» z=-5./(1+x.^2+y.^2);» waterfall(x,y,z)» hidden off
-4-2
02
4
-4
-2
0
2
4-5
-4
-3
-2
-1
0
• Especiais em 3D – pie3
» pop=[3332;696;694;437;307];» pie3(pop)» title('população do mundo')
13%
13%
população do mundo
8%6%
61%
• Especiais em 3D – stem3
» t=linspace(0,6*pi,200);» x=t;» y=t.*sin(t);» z=exp(t/10)-1;» stem3(x,y,z)
05
1015
20
-20
-10
0
10
200
1
2
3
4
5
6
• Especiais em 3D – ribbon
» t=linspace(0,5*pi,100);» y=sin(t);» ribbon(t,y,0.1)
0.90.95
11.05
1.1
0
5
10
15
20-1
-0.5
0
0.5
1
• Especiais em 3D – sphere
» sphere(20)
ou
» [x,y,z]=sphere(20);» surf(x,y,z)» axis('equal')
• Especiais em 3D – cylinder
» z=0:0.02:1;» r=sin(3*pi*z)+2;» cylinder(r)
• Especiais em 3D – slice
» v=[-3:0.2:3];» [x,y,z]=meshgrid(v,v,v);» f=(x.^2+y.^2-z.^2);» xv=[-2 2.5];» yv=2.5;» zv=0;» slice(x,y,z,f,xv,yv,zv)» view(-30,30)» xlabel('x')» ylabel('y')» zlabel('z')» colorbar(‘horiz’)
• Plotando informações volumétricas – As funções disponíveis para visualização de
informação volumétrica são: “slice”, “isosurface”, “isonormal”, “isocaps”, “subvolume”, “reducevolume”, “smooth3”, “reducepatch”. Veja helpdesk para mais informações.
• Plotando superfícies interpoladas – Muitas vezes, nós temos alguma informação
em forma (x,y,z) e queremos ajustar uma superfície a essa informação. Para isso usamos o comando “griddata”.
[Xi,Yi,Zi]=griddata(x,y,z,xi,yi,‘método)
• Plotando superfícies interpoladas
» xv=2*rand(1,100)-1;» yv=2*rand(1,100)-1;» zv=3./(1+xv.^2+yv.^2);» stem3(xv,yv,zv)
-1-0.5
00.5
1
-1
-0.5
0
0.5
10
0.5
1
1.5
2
2.5
3
• Plotando superfícies interpoladas
» xi=linspace(-1,1,30);» yi=xi;» [xi,yi]=meshgrid(xi,yi);» [Xi,Yi,Zi]=griddata(xv,yv,zv,xi,yi,'v4');» surf(Xi,Yi,Zi)
• Handle Graphics
– O que é um handle?
São números associados a todo objeto de uma figura.
Hierarquia dos objetos gráficos:
• Propriedade dos objetos» h=plot(1:20)
h =
1.0056
» get(h)Color = [0 0 1]EraseMode = normalLineStyle = -LineWidth = [0.5]Marker = noneMarkerSize = [6]MarkerEdgeColor = autoMarkerFaceColor = noneXData = [ (1 by 20) double array]YData = [ (1 by 20) double array]ZData = [] ...
• Propriedade dos objetos» h=plot(1:20)
h =
1.0056
» get(h)Color = [0 0 1]EraseMode = normalLineStyle = -LineWidth = [0.5]Marker = noneMarkerSize = [6]MarkerEdgeColor = autoMarkerFaceColor = noneXData = [ (1 by 20) double array]YData = [ (1 by 20) double array]ZData = [] ...
• Propriedade dos objetos» h=plot(1:20)
h =
1.0056
» set(h,'Linewidth',2) %muda a espessura da linha» set(h,'Color',[0 1 1]) %muda a cor da linha
• Animação (Fazer um filme)
nframes = 36;Frames = moviein(nframes);angulo = linspace(0,360,36);x=linspace(-3,3,100);[X,Y]=meshgrid(x,x);Z=X.*Y.*(X.^2-Y.^2)./((X.^2+Y.^2));mesh(X,Y,Z)for i=1:nframes view(angulo(i),30) Frames(:,i)=getframe;endmovie(Frames,2)