Main Content

更改数据后自动刷新图

绘制工作区变量中的数据时,图中包含的只是这些变量的副本。因此,如果更改工作区变量(例如添加或删除数据),图并不会自动更新。如果要在图中反映这种更改,必须重新绘图。但是,您可以使用下面的方法之一,将图链接到它们所表示的工作区变量。将图与工作区变量链接后,这两个位置会同时反映数据更改。

  • 使用数据链接功能将图链接到工作区变量。

  • 将绘图对象的数据源属性(例如 XDataSource 属性)设置为工作区变量的名称。然后调用 refreshdata 函数,间接更新数据属性。可以使用此方法来创建动画。

使用数据链接功能更新图

数据链接功能可使图与它们所表示的工作区变量保持持续同步。

例如,以迭代方式逼近 pi 值。创建变量 x 表示迭代序号,创建变量 y 表示逼近值。绘制 xy 的初始值。使用 linkdata on 打开数据链接功能,以便在变量更改时更新图。然后,通过 for 循环更新 xy。图以半秒为间隔进行更新。

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

Line plot after animation

使用数据源属性更新图

除了使用数据链接功能外,还可以通过设置绘图对象的数据源属性使图与工作区变量保持同步。可以使用此方法来创建动画。

例如,以迭代方式逼近 pi 值。创建变量 x2 表示迭代序号,创建变量 y2 表示逼近值。绘制 x2y2 的初始值。通过将绘图对象的数据源属性设置为 'x2''y2',使图与工作区变量链接起来。然后,通过 for 循环更新 x2y2。在每次迭代中调用 refreshdatadrawnow,根据更新的数据来更新绘图。

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

Line plot after animation

另请参阅

| | |

相关主题