From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI製品ディスカッション

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

配列検索

LabVIEW ver7.0を使用しています。
配列検索を使ったのですが、うまく検索できません。
y軸配列というのを作っていて、その中には0~1.5まで0.1刻みで値が16個入っています。
検索を試したのですが、0.6、0.7、1.2、1.4は上手く検索できません。
解決作を教えて頂けないでしょうか?
0 件の賞賛
メッセージ1/3
3,715件の閲覧回数

配列中の0.1~1.5のデータは、どのように作成しましたでしょうか? また、検索に使用する0.1から1.5のデータはどのように作成しましたでしょうか? 0.1~1.5を直接数値定数で用意した場合と、0.1を整数倍して得たもの、あるいは0.1を次々と加算して得たものは、それぞれに内部で微妙に数値が違います。これは、2進数では循環小数になって厳密に表しきれないからですが、ためしに、0.1を「×」で6倍し、定数の0.6と「=」で結んでみてください。結果はFalseになると思います。おそらくこうしたことが原因で、生成の仕方が違うことで「厳密には違う」と判定されて検索できないのだと思います。Doubleであっても一致しません(Singleだともっと一致しません)。

なので、小数を比較する際は、=ではなく、差をとって微少量以下、とかで一致と判断しますが、今回のように配列の検索でやる場合は、「Threshold 1D array」関数でざっくりした指標を得るか、もしくは10倍して整数化しておいてから配列の検索にかける、などすると良いかと思います。

 

0 件の賞賛
メッセージ2/3
3,706件の閲覧回数
白石様
 
早速の回答有難うございます。
比較する値を100倍して「最も近い整数値」でまるめて探索したらうまくいきました
有難うございました。
0 件の賞賛
メッセージ3/3
3,698件の閲覧回数