10-12-2016 07:00 AM
VIを拝見しましたが、ケースストラクチャでは常にFalseケースが実行されるようになってしまってます。比較の向きが逆ではないですか?実行のハイライトやプローブなどで確認してみてください。
また、今お使いの平均の計算方法に問題があります。例えば、1と2と3の平均は2ですが、ナツ様の計算方法だと1と2の平均1.5と3の平均をとるようになっていて、結果が違ってきます(この場合は2.25)。
あと、そもそもですが、今回の処理では、ケースストラクチャを使う必要はないと思います。シフトレジスタには取得データ配列の和をためていき、それをi+1で割ることできちんとした平均が計算できると思います。また、シフトレジスタは初期化しておく必要があります。
10-12-2016 09:58 AM
Mely様
返信ありがとうございます。
確かに私のやり方では、平均の値がうまくとれていませんでした。それにシフトレジスタの初期化も忘れる始末で、ほんとに申し訳ありません。
Merly様の「シフトレジスタには取得データ配列の和をためていき、それをi+1で割ることできちんとした平均が計算できると思います。」の考え方は理解できたのですが、「ケースストラクチャを使用する必要がない」というところが分かりませんでした。上記の考え方の場合だとForループ内でひたすら取得データ配列の和を取っていき、ループ外でまとめてi+1で割る感じだと思います。具体的には、Forループ内で取得データ配列の和をとろうとすると、まずi=0のときの取得データはそのままシフトレジスタに配線し、その後のi=n(n=1,2,3….)より後では、ひたすらi=nのときの取得のデータとシフトレジスタにため込んだデータを足し合わせていく流れになるのだろうと思うのですが、そのためにはケースストラクチャを用いて例えばi=0のときはFALSEでそのまま何もせずシフトレジスタへ、i=n(n=1,2,3…)のときはTRUEでシフトレジスタにため込んだデータ配列と和をとるといった処理が必要になるんじゃないかと思うのですが、何かシフトレジスタを使用しなくてもよい方法があるのであればアドバイスを頂けると幸いです。
10-12-2016
10:06 AM
- 最終編集日:
03-27-2025
02:10 PM
、編集者:
Content Cleaner
サクッと平均化部分作ってみました。
下のノイズ入り正弦波生成部分は動作チェックのためのものです。こんなチェック方法もありますよ、という例なので、消していただいて構いません。
png画像はVIスニペットなのでブロックダイアグラムに直接貼り付けられます。
10-12-2016 09:49 PM
Merly様
参考となるVIを作成して頂き本当にありがとうございます。
添付されたAverageWaveform_revised.png 146 KB なのですが、VIスニペットという方法を初めて知りました。この方法だと画像のデータをそのままブロックダイアグラムにドロップするだけでできるらしいのですが、下記に添付した画像のようにURLが張られるだけなのですがバージョンが古いからなのでしょうか?(私が使用しているLabVIEWのバージョンは15.0.1です。)
また、加算平均%u3000試作2_revised.vi 107 KBについてもこのVIのバージョンが16.0であったため、開くことができませんでした。 この加算平均%u3000試作2_revised.vi 107 KB というのは上記のVIスニペットと同様のVIなのでしょうか?
10-12-2016 11:57 PM
お使いのバージョンまで気が回らず申し訳ありません。
LabVIEW 2015で保存したものを再度添付します。
おっしゃる通り、VIの内容とpngの内容は同じものです。
10-13-2016 08:08 PM
Merly様
わざわざ2015Verで保存して頂きありがとうございます。
Merly様の作成したVIを見てただ関心するばかりでした。こんなにシンプルでかつ綺麗に完成できるものなのですね。ケースストラクチャを使用しないこの方法は未熟な自分にとって大変勉強になりました。私もこのくらいのVIならさくっと作成できるくらいの実力が持てるよう精進していきたいと思います。
Merly様には文面でしか感謝を示すことができないので心苦しいのですが、再度感謝の気持ちを込めて言わせてもらいます。本当に度重なるアドバイスおよびVIを作成して頂きありがとうございました。
また、作成して頂いたVIなので不明な点が出て自身ではどうしても分からなかった場合は、質問させてください。
ナツ
10-13-2016 09:18 PM
お役に立てたようで何よりです。
今回のプログラム上の注意点は、シフトレジスタの初期化を空の配列で行わないことですね。今回は読み込むサンプル数が決まっているので、その数の要素数を持った0埋め配列で初期化しています。そうしないと、配列同士の和関数の性質上、シフトレジスタにデータをためることができません。おそらく、ナツ様がケースストラクチャを使うことにしたのはこのためだと思います。
あと、もし解決されたのであれば、解決策としてマークしておいていただけるとありがたいです。