なぜ MATLAB で DAQ と連続バックグラウンド生成を行う際、なぜ事前に 0.5 秒分のデータを読み込んでおく必要があるのですか?

Data Acquisition Toolbox で NI デバイスを使い、次の手順で連続バックグラウンド生成(background generation)を始めたいと考えています。
dq = daq("ni");
start(dq、「連続」);
write(dq, outputData);
ただ、最初に書き込むデータが少なすぎると、MATLAB は次のエラーを返します。
Write at least 5000 scans to initiate background generation.
デバイスごとに必要な初期スキャン数の閾値が事前には分からないため、複数のデバイスで共通のプログラムを使用できるように、閾値の実用的な求め方を知りたいです。あわせて、この最小値が必要なのは連続生成の開始時だけなのか、それとも出力開始後も同じエラーが発生することがあるのかも知りたいです。

 Accepted Answer

MathWorks Support Team
MathWorks Support Team about 6 hours ago
連続生成では、バックグラウンド出力を始める前に、約半秒分のデータをあらかじめキューに入れておく必要があります。実用上は、必要な初期スキャン数はレートから次のように見積もれます。
requiredScans = ceil(dq.レート / 2);
この要件があるのは、連続生成の開始時だけです。MATLAB は、バックグラウンドでのバッファ補充とコールバック処理を安定して開始するために、最初だけやや大きめのバッファを必要とします。
一方、有限長出力ではこの制限はありません。サンプル数が有限であれば任意の数を書き込めますし、セッションが連続モードで動作していない限り、少ないサンプル数でもバックグラウンド生成できます。

More Answers (0)

Categories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!