martes, marzo 13, 2007

Cómo hacer un gif con Octave o Matlab

Introducción


Para algunos trabajos o presentaciones, mejor que un esquema, es una animación.
En nuestro caso teniendo ecuaciones de movimiento podemos hacer una en formato gif, que se pueden pegar en un Pagüer-point u OpenOffice.
En una entrada anterior se muestra como hacer una  animación en matlab con un sistema mecánico. animación en matlab con un sistema mecánico.
Esas animaciones las podemos guardar como videos *.avi, pero como ese formato pesa mucho, personalmente prefiero los gifs.

La gran pregunta es ¿Cómo se hacen los gifs?

El problema se divide en dos partes: hacer el grupo de imágenes y luego hacer el gif, para hacer el grupo de imágenes usamos matlab u Octave.
Para la segunda parte hay dos alternativas:

Alternativa 1 Hacer el gif en la página make a gif

Ya con el grupo de imágenes vamos a internet, a la página Make a gif dónde puedes cargar tus imágenes y regular la velocidad.

Alternativa 2 consola linux 

Con la consola linux, basta tener ordenados por orden alfabético los archivos de una misma extensión y hechar a correr el siguiente comando

convert -delay 5 -loop 0 *.png animacion.gif

En este blog se muestra una explicación más detallada del comando de arriba.


Ejemplos


Ejemplo para MATLAB


El ejemplo son puntos de una parábola puse las ecuaciones de movimiento parametrizadas.


Lo que se debería ver parecido al gif de arriba (no exactamente igual).


Nótese que la estrategia para guardar imágenes en matlab es el comando getframe y el comando imwrite. Es necesario decir que ambos comandos son útiles en matlab, pero no en Octave, por eso a continuación la versión de Octave.



Ejemplo para Octave

El mismo ejemplo con los puntos de una parábola y las ecuaciones de movimiento parametrizadas.
La diferencia está en el uso del comando print, cuyas entradas son la figura a graficar, el nombre del archivo y el formato.

Nótese que el comando print tiene como entrada:

La figura, que tiene como nombre el i-ésimo paso por el ciclo for ( la variable i )
Notar que los nombres con una i menor a 10 tienen un cero anterior, esto es para poder ordenar los nombres al crear el gif por consola
El nombre del archivo que se define también con el i-ésimo paso por el ciclo for (la variable i)
La extensión png, que en este caso es la cadena '-dpng'

Después de usar el método de la consola con el comando convert el resultado es el de más abajo. Nótese también el cambio del grosor de las lineas usando en el comando plot la cadena linewidth y el cambio del tamaño del marcador usando en el comando plot el parámetro markersize.



¿Está bien? Cualquier comentario, observación es bienvenida

8 comentarios:

Anónimo dijo...

este progrma es dificil necesitas saber hacerlo
para eso esta el pivot ke lo conseguis en cualkier pagina
bajense mejor el pivot

CELY dijo...

HOLA MUY INTERESANTE TU BLOG UNA PREGUNTA SI YO TENGO UN MAPA DIGITALIZADO COMO PUEDO INCLUIRLO EN MATLAB Y AL MISMO TIEMPO PODER UNA PESTAÑA PARA QUE DENTRO DEL MAPA SALGAN DATOS QUE YO ELIJA COMO CIUDADES O PUNTOS DONDE EN EL APSI HAYAN TORMENTAS CLARO YO YA TENGO LA LOCALIZACION TANTO DE LONGITUD COMO DE LATITUD PERO COMO LAS UNO

Ixchel_VaRo dijo...

Ayuda urgente por favor!!
Podrías ser un poco más explícito en los pasos? Te lo pide una novata en MatLab sin tiempo de instruirse en el área (no me refiero a mis ocupaciones sino al que determinó mi profesor).En realidad mi duda es sobre el nombre que le diste a tu código(para correrlo),qué imagen(es) utilizaste y dónde las ubicaste, y si fuera posible, que me pudieras explicar cómo funciona el animador de imágenes. No pienso plagiar tu trabajo, sólo quiero darme una idea sobre cómo hacer el mío, un objeto que siga una trayectoria y sea capaz de rotar conforme avance por las líneas curvas (lo cual es una parte del trabajo).
Ojalá puedas ayudarme con mis dudas y de cualquier otro modo te agradezco por la información que ya has dado pues es buenísima. Sigue así =P

Francisco Roco dijo...

El código es el que se muestra en la "entrada" del blog, lo pegas en el editor de MAtlab y lo hechas a correr, las imágenes quedan en la carpeta en que trabajas, y para hacer el gif usas el programa. Si usas Linux puedes hacer el gif como se explica acá:

http://novatillaenapuros.wordpress.com/2008/10/04/crear-un-if-en-consola-con-imagemagick/

Creo que eso es todo

chao

Anónimo dijo...

Hola.
Hay un error en esta linea para que salga el gif que presentas en la pag.

plot(x(1:i),y(1:i),' . ')
debe decir:
plot(x(1:i),y(1:i),' w ')

Saludos. Scotty.

Josué Díaz Avalos dijo...

bien brother, gracias , me va a servir para una expo.osea hay q darle movimiento a las cosas

Anónimo dijo...

no pasan nada no me sale..por favor podrias decirmeque hago paso a paso

Unknown dijo...

Hola! muy buena tu publicación. Sólo que me falta un detalle, las imágenes se guardan sin las leyendas de los ejes y sin los valores de escala. ¿Qué se puede hacer al respecto?