NI製品ディスカッション

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

配列 条件による要素の抜き出し

解決済み
解決策を見る

新海と申します。labview2014を使用しています。よろしくお願いいたします。

 

今回、助力をお願いしたいことは配列要素の抜き出しについてです。

現在行っている処理は二つの波形振幅A,Bが同時刻に合わせて2列に並んでいる配列についてで、1列目のある要素の時の2列目の振幅値を抜き出すという処理を行っています。

希望する処理は「Ai<0かつAi+1>0のとき、|Ai|<|Ai+1|ならばAiとBiを抜き出し、|Ai|>|Ai+1|ならばAi+1とBi+1を抜き出す」という処理です。このあと、再び配列として保存を考えています。今、詰まっている個所はカギかっこで囲んだ部分でforループとケースストラクチャで作っているのですが、配列の要素を条件にかける方法がわからず手詰まりになってしまいました。

 

ご教示いただければ幸いです。

0 件の賞賛
メッセージ1/6
6,839件の閲覧回数
解決策
トピック作成者nu0617が受理

nu0617 様

 

配列の処理を行う時にはFORループに入力して、「自動指標トンネル」を使って、個々の要素を取り出します。

一つ前の要素を使う時には「シフトレジスタ」を使ってデータを次の回へ送ります。

 

ある条件を満たした時だけ要素を取り出す場合には「条件付きトンネル」を使います。

 

ArrayPickup.png

 

こんな感じになります。

メッセージ2/6
6,823件の閲覧回数

KONDOH 様

nu0617です。お返事ありがとうございます。

 

実例を踏まえた解説ありがとうございます。シフトレジスタの使い方を知らなかったので、こんなに簡単にできるとは思いませんでした。

私の方でも添付のファイルを参考に進めてみたところ、入力波形の部分を記録したスプレッドシートからの配列に置き換えることで、目的の結果を得ることができました。

 

本当にありがとうございました。

0 件の賞賛
メッセージ3/6
6,806件の閲覧回数

何度もご迷惑をおかけしてすみません。nu0617です。

 

このシフトレジスタというものは配列の2つ前の要素を使用することもできるのでしょうか。

たとえばsin波形のピーク値を抽出したい場合、「An<An+1かつAn+1>An+2のときAn+1の値を抽出する」という動作にしたいと考えているのですが

可能でしょうか。

よろしくお願いします。

0 件の賞賛
メッセージ4/6
6,731件の閲覧回数
解決策
トピック作成者nu0617が受理

左枠のシフトレジスタを右クリックして要素を追加を選択するか、またはシフトレジスタの下部にカーソルを合わせてドラッグすると、2つ以上前のデータにアクセスすることができます。

http://www.ni.com/getting-started/labview-basics/ja/shift-registers

 

おそらくお望みのことはこの機能を使えば実現できるかと思います。

一つ申し上げると、上のページは「LabVIEW シフトレジスタ 複数」という検索ワードですぐ見つかるものです。

フォーラムで聞く前にまずGoogle検索などで調べるようになさった方が良いかと存じます。

 

よろしくお願いします。

メッセージ5/6
6,718件の閲覧回数

gustav2525 様

nu0617です。

 

教えていただいたURLは確認していたのですが、細かいところまで目を通していなかったので、スタックシフトレジストをよく理解していませんでした。

ご指摘の通りコミュニティ投稿前のヘルプの活用やgoogle検索は重要だと思います。お恥ずかしい限りです。

 

結果的に目的のブロックダイアグラムを作成することができました。

ありがとうございました。

0 件の賞賛
メッセージ6/6
6,711件の閲覧回数