尝试向图上添加点时出错

时间:2018-07-26 01:19:22

标签: matlab plot

我正在尝试向3D图中动态添加信息:

A = [ -8/3 0 0; 0 -10 10; 0 28 -1 ];
y = [35 -10 -7]';
h = 0.01;
p = plot3(y(1),y(2),y(3),'.','EraseMode','none','MarkerSize',2);
axis([0 50 -25 25 -25 25])
hold on
while 1
    A(1,3) = y(2);
    A(3,1) = -y(2);
    ydot = A*y;
    y = y + h*ydot;
    set(p,'XData',y(1),'YData',y(2),'ZData',y(3))
    drawnow
end

我收到以下错误:

  

警告:不再支持EraseMode属性,并且会出错   在将来的版本中。

     

在strange_attractor中(第4行)警告:不再支持EraseMode属性,并且在以后的版本中将出错。

     

在unique_attractor中(第4行),使用matlab.graphics.chart.primitive.Line / set出错。无效或已删除的对象。

     

stranger_attractor错误(第12行)       set(p,'XData',y(1),'YData',y(2),'ZData',y(3))

我知道我正在使用过时的语法来动态更新不再受支持的绘图。我该如何运作?

请注意,我不想在循环内调用plot3,因为它会使绘图变慢并且占用大量内存。我希望调用一次plot3,然后在循环内将新点添加到现有图中。可以在新版本中完成吗?

Matlab版本:R2018a

1 个答案:

答案 0 :(得分:3)

在上面的评论中,当您说“这不起作用”时,您是什么意思?根据给定的文档链接,直接修改您的代码即可:

A = [ -8/3 0 0; 0 -10 10; 0 28 -1 ];
y = [35 -10 -7]';
h = 0.01;
p = animatedline(y(1),y(2),y(3),'Marker','.','MarkerSize',2);
axis([0 50 -25 25 -25 25])
hold on
while 1
    A(1,3) = y(2);
    A(3,1) = -y(2);
    ydot = A*y;
    y = y + h*ydot;
    addpoints(p,y(1),y(2),y(3))
    drawnow
end

enter image description here