Matlab轴缩放

meu*_*meu 8 matlab plot axes scale

在绘制循环内部时,如何在Matlab绘图中获得固定的轴缩放?我的目标是了解数据如何在循环内发展.我尝试使用axis manual,并axis(...)没有运气.有什么建议?

我知道hold on诀窍,但我不想看到旧的数据.

gno*_*ice 6

如果要查看新绘制的数据,请替换旧的绘制数据,但保持相同的轴限制,可以使用循环中的SET命令更新绘制数据的x和y值.这是一个简单的例子:

hAxes = axes;                     %# Create a set of axes
hData = plot(hAxes,nan,nan,'*');  %# Initialize a plot object (NaN values will
                                  %#   keep it from being displayed for now)
axis(hAxes,[0 2 0 4]);            %# Fix your axes limits, with x going from 0
                                  %#   to 2 and y going from 0 to 4
for iLoop = 1:200                 %# Loop 100 times
  set(hData,'XData',2*rand,...    %# Set the XData and YData of your plot object
            'YData',4*rand);      %#   to random values in the axes range
  drawnow                         %# Force the graphics to update
end
Run Code Online (Sandbox Code Playgroud)

当您运行上述操作时,您会看到一个星号在轴上跳转几秒钟,但轴限制将保持不变.您不必使用HOLD命令,因为您只是更新现有的绘图对象,而不是添加新的绘图对象.即使新数据超出轴限制,限制也不会改变.

  • +1我也有一些建议:1)为了避免闪烁,你应该启用双缓冲`set(gcf,'DoubleBuffer','on')`.2)如果你想提高绘图速度并获得更流畅的动画,可以将`EraseMode`属性设置为'normal'以外的其他属性(在这种情况下我会使用`xor`).当然,您必须使用线路,补丁,文本等低级功能.有关详细信息,请查看本指南:http://www.mathworks.com/support/tech-notes/1200/1204. HTML#坝段%2023 (4认同)