我在MATLAB中有一个简单的循环,它执行以下操作:
for p = 1:100
x = 4.*randn(1,100);
y = 7.*randn(1,100);
figure(1)
plot(randn(1,100));
figure(2);
plot(randn(1,100));
end
虽然x和y是虚构的,但这就是它的要点。无论如何,当我运行此代码时,MATLAB将制作两个图,并相应地进行绘制。问题是,当我这样做时,我会在图之间出现一种“闪烁”,这使得随时间推移观察x和y的演变质量变差。
我发现了一种使其中一个图更加平滑的方法,如下所示:
figure(1);
for p = 1:100
x = 4.*randn(1,100);
y = 7.*randn(1,100);
plot(randn(1,100));
drawnow
end
如果我这样做,那么figure(1)将非常平滑地显示x,而不会在绘图之间“闪烁”,但现在我无法显示figure(2)或y!如何在不“闪烁”的情况下在不同的图形上(而不是子图)绘制这些数量?编辑:感谢Geodesic的答案,解决方案有效,但是有一个微妙的问题,我认为这不是一个问题,但是它是。1)我无法使用此解决方案进行“imagesc”。例如,
figure(1);
aone = axes;
figure(2);
atwo = axes;
for p = 1:100
x = 4.*randn(1,100);
y = 7.*rand(10,100);
plot(aone,x);
drawnow;
imagesc(atwo,y);
drawnow;
end
在这种情况下,使用imagesc(atwo, y)的部分会崩溃。