04-23-2013 02:55 AM
はじめまして。
sho.kと申します。
早速ではございますが、表記についてです。
現在、
①信号源からの値(生データ)
②生データを式に代入して得られた換算値
③換算データを移動平均(前後数個での平均)した値
について、チャート表示と1ループ毎に保存というプログラムを作成しています。
①、②については所望の動作をしていることを確認しましたが、③については希望通りの動作を実現させることが出来ませんでした。
添付したviファイルのように②をサブvi『smooth』に接続しましたが、
・1ループ(1秒)毎の移動平均になってしまう
・上記が原因でサンプリングレートを1Hzにすると、②=③となってしまう
という動作になってしまいました。
1ループ毎の移動平均ではなく、実行している間全てのデータに対して移動平均を行わせるためにはどのようにすればよろしいでしょうか。
ご教授のほどよろしくお願いいたします。
解決済! 解決策の投稿を見る。
04-25-2013 06:56 PM
前回の換算データをシフトレジスタに保存しておき
今回の換算データの先頭部に前回の最後から必要な要素数だけ追加すればよいと思います。
もしくは
次回に必要な要素数分だけをシフトレジスタに渡して、
次回の先頭部に追加しても良いです。
04-25-2013 07:32 PM
xyzz様
おはようございます。
返信して頂きありがとうございます。
xyzz様からのアドバイスを試してみたいと思います。
ただ、私自身まだまだ初心者なもので、具体的にどのようなプログラムを作成すればよいかが思い浮かばないのが現状です。
お手数おかけして申し訳ございませんが、もう少し具体的にご説明いただけないでしょうか。
よろしくお願いいたします。
04-28-2013 01:51 PM
移動平均について検索してみたところ、
意外と分かりやすいサンプルがなかったので作ってみました。
このサンプルは他の移動平均のサンプルとほぼ同じ動作ですが、
PtByPtの平均化の関数を使ってるのと、初めて呼び出されたかどうかを検知する関数を使ってるのがポイントです。
PtByPtの関数を使用することで、平均化の部分が見やすくなります。
そして初めて呼び出す?の関数を使用することで、VI が初めて実行したときだけ平均化の関数内で初期化されますので、
VI を実行し続け平均化を行なっても問題はありません。
サンプルのブロックダイアグラムでは上下に異なる方法が2つ並んでいますが、
希望に近いのは波形データに変換しやすい方法1かなと思います。
そして最初のみ初期化されますので、方法1全体をループで囲んでも、
次回ループに前回の計測データが保持されます。
04-29-2013 07:33 PM
doradorachan様
返信が遅くなってしまい、申し訳ございません。
添付していただいたファイルを参考にして、プログラムを作成してみます。
ご丁寧な説明ありがとうございました。
05-12-2013 11:42 PM
doradorachan様
返信が遅くなってしまい、申し訳ございません。
doradorachan様の方法を用いることで、所望の動作をさせることが出来ました。
この度は、誠にありがとうございました。