MATLABでかんたん動画作成


MATLABでかんたん動画作成

はじめに

MATLABで動画作ってTwitterに上げたい! みたいな動機で、MATLABで動画を作成してmp4に書き出すことをやってみました。
その時のコードを備忘録もかねてこちらにまとめておきます。
この例ではバーバーポール(美容室にあるやつ)もどきを3Dで作製して連続表示しています。

できるもの

これがくるくる回ります。
かわいいね!

コード


figure();

% 表示する図の準備
t = (0:0.1:10);
f = 1;
% 余談ですがMATLABだとiは虚数なのでiiを使っています
for ii = (0:0.3:6)

    for jj = (0:0.02:1.6)
        plot3(cos(t-ii+jj), sin(t-ii+jj), t*2, 'r-');
        plot3(cos(pi/2+t-ii+jj), sin(pi/2+t-ii+jj), t*2, 'w-');
        plot3(cos(pi+t-ii+jj), sin(pi+t-ii+jj), t*2, 'b-');
        plot3(cos(3*pi/2+t-ii+jj), sin(3*pi/2+t-ii+jj), t*2, 'w-');
        hold on;
    end

hold off;
grid on;
xlim([-3 3])
ylim([-3 3])

% 今回はなくても問題ないです
drawnow;

% getframe()でも動いて、その場合はまた少し違った図になります
% が、途中で表示範囲を変えたりするとエラー吐くのでgetframe(gcf)の方が安全だと思っています
myMovie(f) = getframe(gcf);

f = f+1;
end

% 好きな形式で書き出し
% 保存場所はコードと同じ場所です
v = VideoWriter('myMovie.mp4', 'MPEG-4');
% ゆっくり表示したかったのでフレームレートを初期値より下げています
v.FrameRate = 10;
open(v);
writeVideo(v, myMovie)
close(v);

おわりに

いかがでしたか??
MATLABは動画作成ソフトではありません。