Matlab 串行输入缓冲区大小

Matlab 串行输入缓冲区大小,matlab,buffer,Matlab,Buffer,我试图读取来自Arduino的大量数据,我将输入缓冲区设置为500000,以确保它可以处理所有这些数据。我的数据是4个传感器的读数,每个样本的频率为250 Hz。在默认的缓冲区大小(712)下,当我实时绘制读数时,我经常遇到障碍,样本变得混乱,这使得绘制变得疯狂。我通过将缓冲区大小增加到50000来解决这个问题。但现在,这将工作一段时间,但如果我想运行它15分钟,我会在5分钟后得到同样的错误行为,另外,绘图会变慢。我确实有一些处理代码以及实时绘图,但它不应该像这样有这样的bi缓冲区。我想知道缓冲

我试图读取来自Arduino的大量数据,我将输入缓冲区设置为500000,以确保它可以处理所有这些数据。我的数据是4个传感器的读数,每个样本的频率为250 Hz。在默认的缓冲区大小(712)下,当我实时绘制读数时,我经常遇到障碍,样本变得混乱,这使得绘制变得疯狂。我通过将缓冲区大小增加到50000来解决这个问题。但现在,这将工作一段时间,但如果我想运行它15分钟,我会在5分钟后得到同样的错误行为,另外,绘图会变慢。我确实有一些处理代码以及实时绘图,但它不应该像这样有这样的bi缓冲区。我想知道缓冲区是否包含从开始到满的所有数据,还是在满时继续擦除旧数据(知道我已经将其保存在另一个向量中并绘制了它)。我真的不明白为什么这种事一直发生

问候
I.H

当缓冲区满时,一旦您获得新数据,它就会删除旧数据。您看到的行为是因为您的处理和打印速度比数据流慢

  • 尽量确保优化处理过程
  • 确保已通过“drawnow”完成绘图。这样,您可以确定,如果队列中有任何内容,则不会执行它
  • 尽量避免保存和保留所有数据
  • 如果问题仍然存在,您可以尝试实现一个计时器,以确保与读取数据一致

当程序使用缓冲区时,如何擦除数据?在文档中,刷新缓冲区会擦除所有数据。我确信当我刷新它时,仍然会有一些新数据我还没有读取,这意味着丢失数据……我正在使用drawnow,并每70个样本更新一次绘图,以加快处理速度。另一个信号处理部分可能很耗时,但那是因为我正在进行繁重的处理……最后,计时器应该如何判断我是否一致?如果你正在读取串行端口,一旦读取,数据就会被删除。你不需要删除任何东西!“我确实有一些处理代码和实时绘图,但它不应该像这样有这么大的缓冲区”。缓冲区的大小不会影响处理速度。如果处理数据块的时间比到达数据块的时间长。。。然后,即使是无限的缓冲区也不会停止数据到达和显示之间的逐渐去同步。