Você está na página 1de 17

Animações em MATLAB

Universidade Estadual Paulista Luiz Gustavo Supriano


Campus de Rio Claro
Roberto Basting Junior
Introdução
 O MATLAB é um sistema interativo cujo
elemento básico de informação é uma matriz

 A partir das matrizes conseguimos plotar seus


respectivos gráficos

 Plotando essa seqüência de gráficos


sobrepostos, podemos gerar uma animação
Como plotar gráficos
 Existem dois tipos de gráficos em Matlab: gráficos 2D e
gráficos 3D

 Gráficos 2D:
Plot: função básica para desenhar gráficos em 2D
exemplo: plot(x,y)
onde: x é a definição do intervalo que queremos plotar
y é a função que desejamos plotar
Como plotar gráficos
 Gráficos 3D:

Curvas:
– plot3(x,y,t)

Superfícies:
– surf(X,Y,Z) => superfície preenchida
– mesh(X,Y,Z) => malha
Animação
 Animação = seqüência de gráficos plotados
sobrepostos

 Requisitos:
Saber o que se deseja animar
Descobrir as funções que serão utilizadas
Gerar uma matriz de posição
Animação
 Objetivos:
Melhor análise de determinados fenômenos através
de recursos visuais
Visualização das iterações de uma função
Simulação de situações reais
Criação de filmes quando os cálculos exigem um
tempo significativo e as imagens resultantes são
bastantes complexas
Como animar?
 O Matlab possui funções específicas para
criação de animações (vídeos):

Avifile(‘nome_arquivo.avi')  gera arquivo avi para


salvar a animação

Close(ponteiro do arquivo)  Fecha o arquivo de


filme.
Como animar?
Getframe  retorna cada pixel da imagem para a
variável de frames ;

Addframe(ponteiro do arquivo,variável de frames ) 


copia cada quadro do gráfico plotado para o final do
arquivo de vídeo;

Axis([xi xf yi yf zi zf])  Fixa o tamanho dos eixos


das coordenadas;
Como animar?

Movie(array_pixel)  executa o filme

Movie(array_pixel,n)  executa o filme n vezes

Aviread(nome_arquivo)  lê um arquivo de filme avi


Exemplos
mov = avifile('animaçao1.avi')
t = 0:pi/100:10*pi;
for i=0:1:50
plot3(sin(t+i).*cos(t+i),sin(t+i),t+i)
hold on
axis off
axis([-1 1 -1 1 0 100])
F=getframe
mov = addframe(mov,F);
end
mov=close(mov);
Animação gerada
Exemplos
video=avifile('trajetoria.avi')
s0=20; v0=15; a=2;
for i=1:5:100
y=s0+v0*i+(a*(i.^2))/2;
xlabel('tempo');
ylabel('espaço');
plot(i,y,'bo');
hold on;
axis off;
F=getframe;
video=addframe(video,F);
end
video=close(video) Animação gerada
Exemplos
m=avifile('superficie.avi')
x=-3:3;
y=1:5;
[X,Y]=meshgrid(x,y);
for i=-100:1
Z=((X+Y).^2)/2-(X.^3);
[X,Y,Z]=peaks(49)
surfl(X,Y,Z./i);
axis([-4 4 -5 5 -10 10])
axis off;
F=getframe;
m=addframe(m,F) Animação gerada
end
m=close(m)
Exemplos
function exemplo=funcao(t,y)
B1=1; B2=1; B3=1; A1=1; A2=1;
exemplo = [y(2);(-(y(1)-y(3))/B1)/A1; y(4);(-(y(3)-
y(5))/B2 - (y(1)-y(3))/B1)/A2; y(6); (-(y(5)/B3 -
(y(3)-y(5))/B2))/A2; ];

m=avifile('teste5.avi')
yo = [0.1 0.1 0.1 0.1 0.1 0.1];
for tspan=1:0.05:10
[t,y] = ode45(@funcao,[0 tspan],yo);
plot(t,y(:,1));
f=getframe;
m=addframe(m,f) Animação gerada
end
m=close(m)
Exemplos
function yprime=vdpol(t,y)
a=0.398; b=2; c=4;
yprime = [-(y(2)+y(3));y(1)+a.*y(2);
b+y(3).*(y(1)-c)];

m=avifile('teste2.avi');
yo = [0.1; 0.1; 0.1];
for tspan=1:5:1000
[t,y] = ode45(@vdpol,[0 tspan],yo);
plot(t,y(:,3));
f=getframe
Animação gerada
m=addframe(m,f)
end
m=close(m)
Exemplos
function yprime=vdpol(t,y)
a=0.398; b=2; c=4;
yprime = [-(y(2)+y(3));y(1)+a.*y(2);
b+y(3).*(y(1)-c)];

m=avifile('eod.avi');
yo = [0.1; 0.1; 0.1];
for t=1:5:1000
[t,y] = ode45(@vdpol,[0 t],yo);
plot(y(:,1),y(:,3));
f=getframe
m=addframe(m,f) Animação gerada
end
m=close(m);
Bibliografia

 MATLAB 6 : curso completo

Duane Hanselman, Bruce Littlefield

Tradução Cláudia Sant'Ana Martins

Editora Prentice Hall, São Paulo 2003.


 Amaro, R.; Takahagi, D. N. Seminário: Animação em Matlab
 Bovolenta, J. E.; Coyado, A. F. Seminário: Matlab
Contato

 Luiz Gustavo Supriano – luizgustavo@supriano.com


 Roberto Basting Junior – basting_jr@yahoo.com.br

Universidade Estadual Paulista


Instituto de Geociências e Ciências Exatas
Departamento de Estatística, Matemática Aplicada e Computação

Você também pode gostar