LabVIEWは初めてですが、必要なデータを取得し、データの取得後にテキストファイルに出力する信号アナライザコードを作成しています。私が抱えている問題は、新しいファイルを作成するときに、前の実行からのデータを保持し、それも印刷することです。これは、私が望んでいることではありません。LabVIEW vi(ver.2009)を添付しましたので、ご協力いただければ幸いです。
また、シフトレジスタの混乱よりも、各反復後にデータをRMSするより良い方法を誰かが知っているなら、私はそれを見てうれしいです。
LabVIEWは初めてですが、必要なデータを取得し、データの取得後にテキストファイルに出力する信号アナライザコードを作成しています。私が抱えている問題は、新しいファイルを作成するときに、前の実行からのデータを保持し、それも印刷することです。これは、私が望んでいることではありません。LabVIEW vi(ver.2009)を添付しましたので、ご協力いただければ幸いです。
また、シフトレジスタの混乱よりも、各反復後にデータをRMSするより良い方法を誰かが知っているなら、私はそれを見てうれしいです。
主な質問に答えるには、文字列を作成するコードの一部(シフトレジスタを使用したforループ)は、viを再実行するたびに以前のデータを保存します。必要なのは、空の文字列でシフトレジスタを初期化することです。

また、いくつかのメモ/提案:
使用したRMS機能についてアドバイスを求められたので、コードを詳しく調べました。そして、私は厳しいかもしれませんが、それは意味がありません(ポイントごとに):

エンドユーザーに実行回数を要求してから、1回減算します。なんで?forループの前にデータを読み取ったためだと思います。(それを削除します)。

これにより、出力データにRMS平均化が追加され、シフトレジスタを使用して独自の計算をすべて失う可能性があります。

実際にデータを変更することなく、データをシフトするだけです。開始周波数をインクリメントすることにより、FFTをシフトします。したがって、55 Hzで検出された信号は、56Hzでプロットされません。エンドユーザーにとって、これは誤解を招く恐れがあります。
コードで注意する必要があることの1つは、継続的なサンプリングがないことです。forループを繰り返すたびに、データ取得が開始および停止されます。これは、キャプチャされた波形のt0をプロットすることで確認できます。一定の間隔で開始されないことに気付くでしょう。より良いアプローチは、最初の反復でExpressVIによって作成されたタスクを使用することです。
。
ただし、取得モードを「連続サンプル」に変更する必要があります。

最後の反復でタスクを閉じることを忘れないでください。

シフトレジスタの代わりに、実行するたびに空にする配列を使用する必要があります。