introdução ao matlab 5.3 para hidrólogos aula 03 – scripts, funções e gráficos programando e...

Post on 22-Apr-2015

105 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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)

top related