避免在MATLAB中连续弹出数字

时间:2017-10-04 09:23:50

标签: matlab popup figure axes

如何在循环内绘制数据的同时避免MATLAB弹出带有两个轴的GUI图f。 这是一个简单的例子:

f=figure;

ax.h1 = axes('Parent',f,'Position',[0.1 0.1 0.8 0.35],'Units','normalized');
ax.h2 = axes('Parent',f,'Position',[0.1 0.6 0.8 0.35],'Units','normalized');

for j=1:20
    axes(ax.h1)
    hold on
    plot(1:3,(1:3)+j)

    axes(ax.h2)
    hold on
    plot(1:3,(1:3)+1+j)

    pause(2)

end

我需要持续绘制数小时的数据。因此,如果每次生成新绘图时MATLAB都没有弹出,那就太棒了。

谢谢!

1 个答案:

答案 0 :(得分:2)

正如@TasosPapastylianou所说,axis电话正在将窗口带到前面。移除循环内的axishold on调用,并使用plot(ax.h1, ...绘制到特定轴。您只需为每个轴调用hold on一次,因此请在开始时使用hold(ax.h1, 'on')等进行此操作。然后,您的图表应在后台继续更新,而不是每次都在前面。

你的例子变成了:

f=figure;

ax.h1 = axes('Parent',f,'Position',[0.1 0.1 0.8 0.35],'Units','normalized');
ax.h2 = axes('Parent',f,'Position',[0.1 0.6 0.8 0.35],'Units','normalized');
hold(ax.h1, 'on')
hold(ax.h2, 'on')

for j=1:20
    plot(ax.h1, 1:3,(1:3)+j)
    plot(ax.h2, 1:3,(1:3)+1+j)

    pause(2)

end