Spa*_*cey 3 graphics matlab user-interface matlab-figure
所以我在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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如果我这样做,那么当然图(1)将很好地绘制非常顺利地显示x,没有图(1)'在图之间'闪烁',但现在我不能显示图(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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,带有imagesc(atwo,y)的部分崩溃.
你的闪烁是因为你在循环中一次又一次地生成每个图形窗口,这就迫使窗口每次都到达前台.首先生成图形,将一些轴附加到它们,然后将数据绘制到每个轴,如下所示:
figure(1);
aone = axes;
figure(2);
atwo = axes;
for p = 1:100
x = 4.*randn(1,100);
y = 7.*randn(1,100);
plot(aone,randn(1,100));
drawnow;
imagesc(y,'Parent',atwo);
drawnow;
end
Run Code Online (Sandbox Code Playgroud)
编辑:函数plot
直接采用轴参数,但imagesc
不是.在这种特殊情况下,您需要将一个Property Name/Value对作为参数发送.生成的图像的"父"将是我们的轴atwo
(见上文).