2017-06-12 15 views
0

Arduinoから多くのデータを読み込もうとしていますが、入力バッファを500000に設定してこれらのデータをすべて処理できることを確認しました。私のデータは250Hzの各サンプルを4つのセンサーで読み取ったものです。既定のバッファサイズ(712)では、リアルタイムで読み値をプロットするときにスラグを取得し、サンプルが乱れてプロットが狂ってしまいます。私はバッファサイズを50000に増やすことでこれを解決しましたが、これはしばらく時間がかかりますが、15分実行したい場合は、5分後に同様の不正行為が発生し、プロットが遅くなります。私はライブプロットと一緒にいくつかの処理コードがありますが、このようなバイバッファーではいけません。バッファがいっぱいになるまでバッファに最初からすべてのデータが含まれるかどうか、またはバッファがいっぱいになると古いデータを消去し続けるかどうかを知りたい(私は既に別のベクトルに保存してそれをプロットしている)。なぜこのことが起こっているのか、私は本当に分かりません。バッファが一杯になるとシリアル入力バッファサイズMatlab

種類は、新しいデータを得れば、それは古いデータを消去し、 I.H

+0

"私はライブプロットと一緒にいくつかの処理コードを持っていますが、このような大きなバッファではいけませんか?"バッファーのサイズは、処理の速度に影響を与えません。データのチャンクに対する処理がデータのチャンクが到着するよりも時間がかかる場合、無限のバッファでさえ、データの到着とその表示の間の段階的な非同期化を止めることはありません。 – Hoki

答えて

0

について。表示される動作は、処理とプロットがデータの流れよりも遅いためです。

  • てみ、あなたが
  • をプロットするため、「関数drawnow」によって行われていることを確認し、処理最適化することを確認します。このように、キュー内に何かがあると実行されないことが確実です。
  • すべてのデータの保存と保存を避けてください。
  • 問題がまだ残っている場合は、タイマーを実装してあなたはあなたのデータを読むことと一貫しています
+0

バッファがプログラムで使用されているときにデータを消去するにはどうすればよいですか?ドキュメントでは、バッファをフラッシュするとすべてのデータが消去されます。私は、まだデータを失うことを意味する.....それをフラッシュするときに私がまだ読んでいないいくつかの新しいデータが残っていると確信しています.....私はdrawnowを使用しており、高速な処理のために70サンプルごとにプロットを更新しています。他の信号処理部は時間がかかるかもしれませんが、それは重い処理をしているからです... ......最終的に、タイマーは私が一貫しているかどうかをどのように把握する必要がありますか? – Isra

+1

シリアルポートを読み取っている場合は、一度読み取るとデータが削除されます。あなたは何かを消去する必要はありません! – Laleh

関連する問題