在Matlab中寻找最简单的制作电影的方法?

时间:2018-01-03 05:41:33

标签: matlab simple-form movie

我想通过在plot语句中的程序末尾插入以下命令,在Matlab中生成一个与时间相关的模拟结果的电影。但是,图形在第一帧停止,但如果我注释掉关于电影的最后两行,则代码会在运行期间显示与时间相关的结果,但不会生成任何电影。

我知道在Matlab中有几种方法可以做到这一点,但我想要的是一种最简单的方法。那就是插入两行,实际上是一行,应该是这样的:

eval(['print -dpict ','temp',num2str(is)]);
在绘图语句中

将每个帧打印为图片文件,然后将它们组合成电影。我的绘图代码如下。你能建议我怎么解决这个问题吗?非常感谢你。

time=time+dt                   % plot the results
uu(1:nx+1,1:ny+1)=0.5*(u(1:nx+1,2:ny+2)+u(1:nx+1,1:ny+1));
vv(1:nx+1,1:ny+1)=0.5*(v(2:nx+2,1:ny+1)+v(1:nx+1,1:ny+1));
for i=1:nx+1,xh(i)=dx*(i-1);end;     for j=1:ny+1,yh(j)=dy*(j-1);end
hold off,contour(x,y,flipud(rot90(r))),axis equal,axis([0 Lx 0 Ly]);
hold on;quiver(xh,yh,flipud(rot90(uu)),flipud(rot90(vv)),'r');
pause(0.01);  
% movie_str = ['print -dpict','temp',num2str(is)]; % generate a movie
% eval(movie_str); pause(0.01);
end

1 个答案:

答案 0 :(得分:0)

您可以考虑制作结果的.gif文件。您可以查看此代码:

h = figure;
axis tight manual % this ensures that getframe() returns a consistent size
filename = 'testAnimated.gif';
for n = 1:0.1:5
    % Draw plot for y = x.^n
    x = 0:0.01:1;
    y = x.^n;
    plot(x,y)
    drawnow
    % Capture the plot as an image
    frame = getframe(h);
    im = frame2im(frame);
    [imind,cm] = rgb2ind(im,256);
    % Write to the GIF File
    if n == 1
        imwrite(imind,cm,filename,'gif', 'Loopcount',inf);
    else
        imwrite(imind,cm,filename,'gif','WriteMode','append');
    end
end

请参阅此链接:https://in.mathworks.com/matlabcentral/answers/94495-how-can-i-create-animated-gif-images-in-matlab