【问题标题】:Matlab Link data for a line graph on a scatter plot散点图上折线图的 Matlab 链接数据
【发布时间】:2013-11-26 06:40:11
【问题描述】:

我有一条线绘制在另一个散点图上。这条线不时改变它的形状。有什么方法可以在我的程序中指定用于绘制这条线的数据是动态的,以便在数据更改时绘图自行更新?

现在我要做的是在每次数据更新后再次绘制整个图形。该程序有大量的迭代(> 5000),我需要可视化每一个变化。这意味着图形应该被绘制 5000 次。这使我的程序非常慢。还有其他更好的方法吗?

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    refreshdata 函数可能会做你想做的事。

    【讨论】:

      【解决方案2】:

      要在源变量更改时自动更新图表,请使用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 缓冲对数据的更新,并以大约半秒的间隔将它们分派到绘图中。这使得数据链接不适合平滑地对数据值的变化进行动画处理,除非它们在强制每秒执行两次或更少的循环中更新。

      【讨论】:

      • 我试过这个。并在第一次迭代中添加了图形。但是这个数字没有得到更新。绘制图形的逻辑在另一个 matlab 文件中。这有什么区别吗?我必须指定其他内容吗?
      • @Doubting 您能否说明一下您是如何绘制图形的以及每个文件中的代码是什么?我认为您需要使用某个变量制作图,然后只更新该变量,而不是绘制新变量。注意:我认为linkdata on 命令需要在包含正在更新的变量的同一工作区中执行。
      • @Doubting 看看at this section of this page。您可能需要很短的延迟,例如 pause(0.1)drawnow 如果您的迭代太快。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      相关资源
      最近更新 更多