NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

LabVIEWとDAQを用いた波形の加算平均について

解決済み
解決策を見る

VIを拝見しましたが、ケースストラクチャでは常にFalseケースが実行されるようになってしまってます。比較の向きが逆ではないですか?実行のハイライトやプローブなどで確認してみてください。

また、今お使いの平均の計算方法に問題があります。例えば、1と2と3の平均は2ですが、ナツ様の計算方法だと1と2の平均1.5と3の平均をとるようになっていて、結果が違ってきます(この場合は2.25)。

 

あと、そもそもですが、今回の処理では、ケースストラクチャを使う必要はないと思います。シフトレジスタには取得データ配列の和をためていき、それをi+1で割ることできちんとした平均が計算できると思います。また、シフトレジスタは初期化しておく必要があります。

0 件の賞賛
メッセージ11/17
1,487件の閲覧回数

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でシフトレジスタにため込んだデータ配列と和をとるといった処理が必要になるんじゃないかと思うのですが、何かシフトレジスタを使用しなくてもよい方法があるのであればアドバイスを頂けると幸いです。

0 件の賞賛
メッセージ12/17
1,483件の閲覧回数

サクッと平均化部分作ってみました。

 

下のノイズ入り正弦波生成部分は動作チェックのためのものです。こんなチェック方法もありますよ、という例なので、消していただいて構いません。

png画像はVIスニペットなのでブロックダイアグラムに直接貼り付けられます。

VIスニペットで再利用を促進

すべてをダウンロード
0 件の賞賛
メッセージ13/17
1,482件の閲覧回数

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なのでしょうか?

 

0 件の賞賛
メッセージ14/17
1,469件の閲覧回数

お使いのバージョンまで気が回らず申し訳ありません。

LabVIEW 2015で保存したものを再度添付します。

おっしゃる通り、VIの内容とpngの内容は同じものです。

すべてをダウンロード
0 件の賞賛
メッセージ15/17
1,464件の閲覧回数

Merly様

 

わざわざ2015Verで保存して頂きありがとうございます。

Merly様の作成したVIを見てただ関心するばかりでした。こんなにシンプルでかつ綺麗に完成できるものなのですね。ケースストラクチャを使用しないこの方法は未熟な自分にとって大変勉強になりました。私もこのくらいのVIならさくっと作成できるくらいの実力が持てるよう精進していきたいと思います。

Merly様には文面でしか感謝を示すことができないので心苦しいのですが、再度感謝の気持ちを込めて言わせてもらいます。本当に度重なるアドバイスおよびVIを作成して頂きありがとうございました。

また、作成して頂いたVIなので不明な点が出て自身ではどうしても分からなかった場合は、質問させてください。

 

ナツ

0 件の賞賛
メッセージ16/17
1,440件の閲覧回数
解決策
トピック作成者ナツが受理

お役に立てたようで何よりです。

今回のプログラム上の注意点は、シフトレジスタの初期化を空の配列で行わないことですね。今回は読み込むサンプル数が決まっているので、その数の要素数を持った0埋め配列で初期化しています。そうしないと、配列同士の和関数の性質上、シフトレジスタにデータをためることができません。おそらく、ナツ様がケースストラクチャを使うことにしたのはこのためだと思います。

 

あと、もし解決されたのであれば、解決策としてマークしておいていただけるとありがたいです。

メッセージ17/17
1,427件の閲覧回数