想做一个动画,这个动画有40幅图片构成,文件名是规范命名的,如:
moviefile1.jpg,moviefile2.jpg,...,moviefile40.jpg.一个一个第手工添加肯定会累死.
下面的代码定义了计数器和字符串变量,实现了批处理加载图像文件的方法,并演示了$MATLAB$中的动画功能,有点类似gif动画文件:
%%============================================ \begin{frame}[fragile] \frametitle{动画的小例子$plot5$} \framesubtitle{~$MATLAB$~简单的示例} \begin{columns} \column{0.425\textwidth}<1-> \begin{center} \tiny \begin{lstlisting}[language=Matlab,numberstyle=\tiny, xleftmargin=1em,xrightmargin=0em, aboveskip=1em ] %% 动画 maxj=40; Z = peaks(maxj); figure('Renderer','zbuffer'); surf(Z); axis tight manual; set(gca,'NextPlot','replaceChildren'); for j = 1:maxj surf(sin(2*pi*j/maxj)*Z,Z) F(j) = getframe; fn=['moviefile',num2str(j),'.jpg']; saveas(gcf,fn) end movie(F,2) % Play the movie 2 times \end{lstlisting} \end{center} \column{0.575\textwidth}<1-> \setcounter{thirdcounter}{0}%设置计数器的值,每次增加一个值用 \begin{animateinline}[autoplay, loop, begin={\begin{tikzpicture}[scale=1] \useasboundingbox (-1cm,0cm) rectangle(5cm,6cm);}, end={\end{tikzpicture}}]{10} %总共生成40帧画面,以每秒10帧的速度自动播放 \multiframe{40}{Inum=0+1}{% %Inum:每帧 \stepcounter{thirdcounter} \def\abc{moviefile\thethirdcounter} %定义动态字符串作为文件名 \node[draw] at (2,3){\includegraphics[width=0.925\textwidth,totalheight=0.725\textheight]{\abc}}; }% \end{animateinline} \end{columns} \end{frame}最终的效果如下: