更改数据后自动刷新图
绘制工作区变量中的数据时,图中包含的只是这些变量的副本。因此,如果更改工作区变量(例如添加或删除数据),图并不会自动更新。如果要在图中反映这种更改,必须重新绘图。但是,您可以使用下面的方法之一,将图链接到它们所表示的工作区变量。将图与工作区变量链接后,这两个位置会同时反映数据更改。
使用数据链接功能将图链接到工作区变量。
将绘图对象的数据源属性(例如
XDataSource
属性)设置为工作区变量的名称。然后调用refreshdata
函数,间接更新数据属性。可以使用此方法来创建动画。
使用数据链接功能更新图
数据链接功能可使图与它们所表示的工作区变量保持持续同步。
例如,以迭代方式逼近 pi
值。创建变量 x
表示迭代次数,创建变量 y
表示逼近值。绘制 x
和 y
的初始值。使用 linkdata on
打开数据链接功能,以便在变量更改时更新图。然后,通过 for 循环更新 x
和 y
。图以半秒为间隔进行更新。
x = [1 2]; y = [4 4]; plot(x,y); xlim([0 100]) ylim([2.5 4]) xlabel('Iteration') ylabel('Approximation for \pi') linkdata on denom = 1; k = -1; for t = 3:100 denom = denom + 2; x(t) = t; y(t) = 4*(y(t-1)/4 + k/denom); k = -k; end
使用数据源属性更新图
除了使用数据链接功能外,还可以通过设置绘图对象的数据源属性使图与工作区变量保持同步。可以使用此方法来创建动画。
例如,以迭代方式逼近 pi
值。创建变量 x2
表示迭代次数,创建变量 y2
表示逼近值。绘制 x2
和 y2
的初始值。通过将绘图对象的数据源属性设置为 'x2'
和 'y2'
,使图与工作区变量链接起来。然后,通过 for 循环更新 x2
和 y2
。在每次迭代中调用 refreshdata
和 drawnow
,根据更新的数据来更新绘图。
x2 = [1 2]; y2 = [4 4]; p = plot(x2,y2); xlim([0 100]) ylim([2.5 4]) xlabel('Iteration') ylabel('Approximation for \pi') p.XDataSource = 'x2'; p.YDataSource = 'y2'; denom = 1; k = -1; for t = 3:100 denom = denom + 2; x2(t) = t; y2(t) = 4*(y2(t-1)/4 + k/denom); refreshdata drawnow k = -k; end
另请参阅
linkdata
| brush
| refreshdata
| linkaxes