在创建动画gif时停止Matlab调整表面大小

时间:2014-06-13 10:07:43

标签: matlab animation image-processing plot animated-gif


我想用Matlab2013(Linux 64bit)创建一个360度旋转曲面图。我可以使用下面的代码片段创建一个动画gif,但Matlab会在整个动画中的某些帧处不断调整表面大小(例如参见[1],第56-59帧)。知道如何防止Matlab调整绘图表面的大小吗? 提前感谢您的建议。

function createVideo( FigureHandler, filename )
grid on
set(gca,'ZTickLabel',[]);
set(gca,'YTickLabel',[]);
set(gca,'XTickLabel',[]);
for n = 1:360
    view(n,66)
    zoom off
    drawnow
    frame = getframe(FigureHandler);
    im = frame2im(frame);
    [imind,cm] = rgb2ind(im,256);
    if n == 1;
        imwrite(imind,cm,filename,'gif', 'Loopcount',inf);
    else
        imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0);
    end
end
end

[1] http://postimg.org/image/prib1psq5/

1 个答案:

答案 0 :(得分:3)

问题是由于轴限制随视图而变化,可以通过手动设置轴限制或设置轴属性'XLimMode''YLimMode''ZLimMode'来防止这种情况,到'manual'

然而,其他属性(例如DataAspectRatio,PlotBoxAspectRatio等......)会导致数字在旋转时放大和缩小

然而,Matlab提供了vis3d轴模式来为您设置所有这些!
您需要添加的是:

axis('vis3d')

应该在设置滴答等之后放置......但在for循环之外