Técnicas de animación
R2026bPuede utilizar varias técnicas para crear animaciones en MATLAB®.
| Técnica | Descripción | Ejemplo |
|---|---|---|
Actualizar datos en un bucle. | Actualice las propiedades de un objeto de gráficas y muestre las actualizaciones en la pantalla en un bucle. Esta técnica es útil para crear animaciones cuando la mayor parte de la gráfica permanece igual. | |
Aplicar transformaciones de matrices. | Agrupe objetos de gráficas y aplique transformaciones a todo el grupo en conjunto. Esta técnica es útil si desea cambiar la posición y la orientación de un grupo de objetos a la vez. | |
Crear un archivo GIF animado. | Actualice una figura y capture los fotogramas de un archivo GIF animado usando la función Esta técnica es útil para crear animaciones que desea almacenar y volver a reproducir. | |
Crear un vídeo. | Actualice una figura y capture los fotogramas de un vídeo usando la función Esta técnica es útil para animaciones complejas que no se muestran rápidamente en tiempo real o cuando desea almacenar y volver a reproducir una animación. Use la función | |
Crear una línea animada. | Cree animaciones de líneas de datos usando la función Esta técnica es útil para optimizar animaciones de líneas. | |
Utilizar funciones de animación especializadas. | Para animaciones más especializadas, puede utilizar funciones como |
Crear animaciones actualizando los datos en un bucle
Cree una animación de un marcador que se mueve por una línea.
Represente una onda sinusoidal. A continuación, cree un marcador y guárdelo como variable
mkrpara poder acceder a sus propiedades más adelante.Utilice las funciones
xlim,ylimyzlimpara establecer los límites de cada eje. Al establecer los límites se deshabilita el cálculo automático de los límites de los ejes, lo que puede provocar que la animación parpadee y se ralentice.Cree un bucle
forque actualice las coordenadas del marcador. Cambie las propiedadesXDataeYDatadel objetoScatter(mkr) en cada iteración para mover el marcador a lo largo de la línea.Llame a la función
drawnowal final de cada iteración de bucle para actualizar la visualización de la figura.
x = linspace(0,10,500); y = sin(x); % Plot a line and create a marker plot(x,y) hold on mkr = scatter(NaN,NaN,[],"red","filled"); hold off xlim([0 10]) ylim([-1 1]) zlim([-1 1]) % Move the marker along the line for i = 1:length(x) mkr.XData = x(i); mkr.YData = y(i); drawnow end

Crear animaciones con la transformación de matrices
Una forma eficaz de animar una gráfica es aplicar una matriz de transformación a uno o varios objetos en lugar de iterar sobre todos los puntos. En esta técnica, se agrupan uno o varios objetos de gráficas como elementos secundarios de un objeto Transform y, después, se establece la propiedad Matrix del objeto Transform para ajustar la posición de todos sus elementos secundarios. Las transformaciones que se pueden utilizar incluyen traslación, rotación y escalado. También puede definir su propia matriz de transformación.
Cree una animación de una esfera giratoria.
Cree las coordenadas de una esfera con la función
sphere.Cree un objeto
Transformdenominadogrputilizando la funciónhgtransform. Después, represente la esfera como un objetoSurfacellamando a la funciónsurfy especificandogrpcomo el objeto principal.Visualice las líneas de cuadrícula de los ejes y muestre el cuadro de la gráfica en una vista 3D.
Cree un bucle
forque recorra 300 valores de ángulo equidistantes de 0 a 2π y que rote la esfera un pequeño ángulo en cada iteración. Use la funciónmakehgtformpara crear la matriz de transformación para cada pequeño ángulo de rotación. Después, establezca la propiedadMatrixdegrppara realizar la rotación.Llame a la función
drawnowal final de cada iteración de bucle para actualizar la visualización de la figura.
% Create the coordinates of a sphere ax = axes; [x,y,z] = sphere(270); % Create transform object and plot the sphere grp = hgtransform(Parent=ax); s = surf(ax,x,y,z,z,Parent=grp,EdgeColor="none"); % Display grid lines and show the plot box in 3-D grid on view(3) axis vis3d axis tight manual % Rotate the sphere by small angles in a loop for ang = linspace(0,2*pi,300) tm = makehgtform("axisrotate",[1,1,1],ang); grp.Matrix = tm; drawnow end
Crear un archivo GIF animado
Cree un archivo GIF animado de un marcador que se mueve por una parábola.
Represente una parábola con un marcador.
Cree un bucle
forque cambie la ubicación del marcador en cada iteración.Al final de cada iteración del bucle, capture la figura como un fotograma de un archivo GIF animado con la función
exportgraphics. Para la primera iteración del bucle, establezca el argumento nombre-valorAppendenfalsepara crear un archivo nuevo con el primer fotograma. A continuación, para el resto de iteraciones del bucle, establezca el argumento nombre-valorAppendentruepara capturar el fotograma actual y añadirlo al archivo GIF especificado.El archivo
parabola.gifresultante se guarda en la carpeta actual.
% Plot a parabola and a marker x = -10:0.5:10; y = x.^2; p = plot(x,y,"-o",MarkerFaceColor="red"); % Move the marker along the parabola and capture frames in a loop for i = 1:41 p.MarkerIndices = i; if i == 1 exportgraphics(gca,"parabola.gif",Append=false) else exportgraphics(gca,"parabola.gif",Append=true) end end

Crear y reproducir un vídeo
Cree un vídeo de una gráfica de superficie que cambia de forma utilizando la función getframe en un bucle. La función getframe captura los fotogramas de vídeo en un arreglo de estructuras y se usa la función movie para reproducir el vídeo.
Represente las coordenadas de la función
peakscomo una superficie utilizando la funciónsurfy guarde el objetoSurfacecomo variables.Coloque el cuadro de la gráfica ajustado estrictamente a la superficie y congele los límites de los ejes con el comando
axis tight manual.Cree un arreglo de 40 estructuras denominado
Fpara contener los fotogramas de la animación.Cree un bucle
forque cambie la forma de la superficie en cada iteración.Al final de cada iteración de bucle, actualice la figura con el comando
drawnowy capture un fotograma del vídeo utilizando la funcióngetframe.El vídeo resultante se guarda como arreglo de estructuras
F.
% Plot a surface Z = peaks; s = surf(Z); axis tight manual % Change the shape of the surface and capture frames loops = 40; F(loops) = struct("cdata",[],"colormap",[]); for j = 1:loops Zframe = sin(j*pi/10)*Z; s.ZData = Zframe; drawnow F(j) = getframe(gcf); end
Reproduzca el vídeo dos veces.
fig = figure; movie(fig,F,2)
Crear una línea animada
La función animatedline le ayuda a optimizar las animaciones de líneas. Le permite añadir nuevos puntos a una línea sin volver a definir los ya existentes.
Cree una animación de dos líneas crecientes.
Cree dos líneas animadas de colores distintos.
Establezca los límites de los ejes antes del bucle para evitar volver a calcular los límites en cada iteración del bucle.
Cree un bucle
forque añada puntos a las líneas.Utilice
drawnowodrawnow limitrateal final de cada iteración del bucle para actualizar la visualización de la figura.
% Create two animated lines of different colors a1 = animatedline(Color=[0 0.7 0.7]); a2 = animatedline(Color=[0 0.5 0.5]); axis([0 20 -1 1]) drawnow x = linspace(0,20,10000); for k = 1:length(x) % Add to first line xk = x(k); ysin = sin(xk); addpoints(a1,xk,ysin); % Add to second line ycos = cos(xk); addpoints(a2,xk,ycos); % Update screen drawnow limitrate end

Consulte también
Funciones
hgtransform|makehgtform|exportgraphics|getframe|movie|writeVideo