【发布时间】:2013-11-26 06:40:11
【问题描述】:
我有一条线绘制在另一个散点图上。这条线不时改变它的形状。有什么方法可以在我的程序中指定用于绘制这条线的数据是动态的,以便在数据更改时绘图自行更新?
现在我要做的是在每次数据更新后再次绘制整个图形。该程序有大量的迭代(> 5000),我需要可视化每一个变化。这意味着图形应该被绘制 5000 次。这使我的程序非常慢。还有其他更好的方法吗?
【问题讨论】:
标签: matlab matlab-figure
我有一条线绘制在另一个散点图上。这条线不时改变它的形状。有什么方法可以在我的程序中指定用于绘制这条线的数据是动态的,以便在数据更改时绘图自行更新?
现在我要做的是在每次数据更新后再次绘制整个图形。该程序有大量的迭代(> 5000),我需要可视化每一个变化。这意味着图形应该被绘制 5000 次。这使我的程序非常慢。还有其他更好的方法吗?
【问题讨论】:
标签: matlab matlab-figure
refreshdata 函数可能会做你想做的事。
【讨论】:
要在源变量更改时自动更新图表,请使用linkdata function。 MathWorks 有一个great introduction page。但是,文档中有一个简短的示例:
x = [1:20];
y = rand(20,3);
area(x,y)
linkdata on
然后你可以改变一个变量,绘图会自动重绘:
y(10,:) = 0;
自动更新。
注意:将源完全更改为不同的变量是另一回事。正如 Molly 所指出的,如果 YDataSource 被重新分配,那么将需要 refreshdata。否则,这将使您的绘图在变量更改时保持最新。
this page 描述了一个警告:
linkdata缓冲对数据的更新,并以大约半秒的间隔将它们分派到绘图中。这使得数据链接不适合平滑地对数据值的变化进行动画处理,除非它们在强制每秒执行两次或更少的循环中更新。
【讨论】:
linkdata on 命令需要在包含正在更新的变量的同一工作区中执行。
pause(0.1) 或 drawnow 如果您的迭代太快。