我想用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
答案 0 :(得分:3)
问题是由于轴限制随视图而变化,可以通过手动设置轴限制或设置轴属性'XLimMode'
,'YLimMode'
和'ZLimMode'
来防止这种情况,到'manual'
。
然而,其他属性(例如DataAspectRatio,PlotBoxAspectRatio等......)会导致数字在旋转时放大和缩小
然而,Matlab提供了vis3d
轴模式来为您设置所有这些!
您需要添加的是:
axis('vis3d')
应该在设置滴答等之后放置......但在for循环之外