在Matlab中冻结轴大小

时间:2018-08-09 19:56:26

标签: matlab plot

我在许多帧中都拍摄了图像。所有框架的尺寸都不同,因此我设置了每个轴的全局最大值和最小值,并使用了axis命令,如下所示:

h = figure;
axis([-8.4188e+03 -7.9061e+03 -102.6261 518.2502 -25.4673 0.2780])
%axis tight manual % this ensures that getframe() returns a consistent size
filename = 'testanim.gif';

但是,尽管我发现Xs,Ys和Zs的最大和最小限制,但动画盒仍在不断更改尺寸。我的代码中还需要其他内容吗?

这是我用于绘制的代码:

% read the data
for k=1:length(FileNames)
   FName = plyfiles(k).name;
   plys=pcread(['Files\',FName]);
   pcshow(plys) % Capture the plot as an image 
   frame = getframe(h);
   im = frame2im(frame);
   [imind,cm] = rgb2ind(im,256); % Write to the GIF File
   if k == 1
      imwrite(imind,cm,filename,'gif', 'Loopcount',inf);
   else
      imwrite(imind,cm,filename,'gif','WriteMode','append');
   end
end

1 个答案:

答案 0 :(得分:1)

pcshowimshow一样,

plot将重置其写入的轴。您可以通过设置

来防止这种情况
hold on

创建轴后。但是,现在点云将显示在先前的点云之上,因此您还必须在绘制新的点云之前清除轴。

最简单的解决方案是在绘制后每次设置轴位置,而不是hold绘制图。也就是说,

set(gca, 'PropertyName', property_value)

pcshow调用之后。我相信要设置的属性是“ XLim”,“ YLim”和“ ZLim”。