NI製品ディスカッション

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

「1D配列検索 関数」って

非数で初期化した1D配列を、非数を「要素」として検索すると「要素の指標」として-1ではなく0が帰って来るんですけど(LabVIEW2017SP1f3で確認)、うちだけの現象でしょうか?
http://zone.ni.com/reference/ja-XX/help/371361P-0112/glang/search_1d_array/

仕様だとするとあんまりうれしくない…。

0 件の賞賛
メッセージ1/4
2,480件の閲覧回数

非数の比較だと、下記の話はありますね。後で私も試してみます。

2つのNaN定数をLabVIEWで比較すると結果がFALSEになります

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
メッセージ2/4
2,466件の閲覧回数

これ(「2つのNaN定数をLabVIEWで比較すると結果がFALSEになります」)を踏まえると、「1D配列検索 関数」は、「等しい? 関数」をForループでぐるぐる回したのと等価な動きが期待されるだけに、裏切られたショックがでかのすけっつーか…。
ビットパターンとして比較してるのでしょうか?

「1D配列補間 関数」も、「小数指標またはx」に非数を入力した場合に、「y値」に非数が伝搬するのを期待すると裏切られますね(多分、-∞を入力したのと同じ振舞い)。
http://zone.ni.com/reference/ja-XX/help/371361P-0112/glang/interpolate_1d_array/

0 件の賞賛
メッセージ3/4
2,443件の閲覧回数

LabVIEW 2017で試してみました。

確かに、NaNのみの1D配列から検索すると、検索結果はindex "0"でした。

"0"というのは判断に困るところがあるので、先頭に"2"を追加し、要素を増やして試しました。

結果、index "1"が返ってきました。なので検索のアルゴリズムとしては、NaNを正しく見つけているようですね。

 

一応比較関数を試しましたが、やはりこちらはNaNを見つけられませんでした。

result.png

 

 

動くのでよいかもしれませんが、少し気持ちが悪いです。

確実なのは、Forループの自動指標配列で1要素ずつ取得し、「非数?」関数で比較することでしょうか。

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
0 件の賞賛
メッセージ4/4
2,442件の閲覧回数