Creating Movies and Animations in Matlab
Ming Sun / October 26, 2022
4 min read • ––– views
Animation work flow in Matlab
- Run a simulation or generate data
load
,sim
function
- Draw/render the scenario at time t[k]
plot
,plot3
,surf
,hold on
,clf
(clear figure)
- Take a snapshot of scenario
getframe
- Advance time to time t[k+1]
continue
: to skip some of the data to avoid large size video output
- Repeat the above process
- Once it is done, save the movie
videowriter
,writevideo
clear; clc; close all;
%% Step 1: Generate data
t = linspace(0, 2*pi, 100);
x = 5*cos(t);
y = 2*sin(t);
z = t;
%% Step 2: Draw/Render the Scenario
figh = figure;
for k=1:length(t)
% Wipe the slate clean so we are plotting with a black figure
clf
% Extract the data at the current time
t_k = t(k);
x_k = x(k);
y_k = y(k);
z_k = z(k);
% plot the current location of the particle
plot3(x_k, y_k, z_k, 'go', 'LineWidth',3, 'MarkerSize', 15)
% plot the entire trajectory
hold on;
plot3(x, y, z, 'b-', 'LineWidth',2)
% Decorate the plot
grid on;
xlabel('x')
ylabel('y')
zlabel('z')
title(['Particle at t= ', num2str(t_k), ' seconds'])
view([30+20*t_k,35])
% force Matlab to draw the image at this point
% drawnow
% pause(0.2)
movieVector(k) = getframe(figh, [10 10 520 400]);
%% Step 4: Advance Time
% Do not need to do anything
end
%% Step 5: save the movie
myWriter = VideoWriter('curve', 'MPEG-4');
myWriter.FrameRate = 20;
% Open the videowritter object, write the move, and close the file
open(myWriter);
writeVideo(myWriter, movieVector);
close(myWriter);
References
[1] Creating Movies and Animations in Matlab - Christopher's youtube tutorial