比較関数を使用する
- 更新日2025-08-27
- 9分で読める
比較関数を使用して、数値、文字列、ブール値、配列、およびクラスタを比較します。ほとんどの比較関数は、1つの入力をテストするか、または2つの入力を比較し、ブール値を返します。
数値を比較する
ほとんどの比較関数は1つの入力についてテストするか、または2つの入力を比較して、ブール値を返します。これらの関数は、数値を比較する前に同じ表記法に変換します。関数は数値を正確に比較するために、各入力値を最大の表記法に変換します。数値でない (NaN) 値を持つ1つまたは2つの入力の比較では、等しくないことを示す比較結果が返されます。
実数のすべてをANSI/IEEE規格の浮動小数点で表すことはできません。したがって、浮動小数点を使用する比較では丸め誤差の影響で予想外の結果が生じる場合があります。
文字列を比較する
比較関数は、ASCII文字コードの値により文字列を比較します。比較関数は、不一致が発生するか、あるいは1つの文字列が終了するまで、0番目の要素から要素を1つずつ、文字列を比較します。この比較関数は、長い文字列が短い文字列より大きいとみなします。
たとえば、a (10進数の97) はA (65) よりも大きくなります。ここで、Aは数字の0 (48) よりも大きく、0はスペース文字 (32) より大きいとみなされます。不一致が発生するまで文字列の先頭から1文字ずつ比較し、その時点で比較は終了します。たとえば、文字列abcdとabefの場合、LabVIEWはeの値よりも小さいcが見つかるまで評価します。また、文字が存在する場合の方が、存在しない場合よりも大きいとみなされます。したがって、文字列abcdはabcよりも長いので、前者の方が大きいとみなされます。
ブール値を比較する
比較関数では、TRUEのブール値はFALSEのブール値よりも大きいと見なして処理します。
配列とクラスタを比較する
一部の比較関数には、データの配列またはクラスタを比較するための2つのモードがあります。基礎群の比較モードでは、2つの配列またはクラスタを比較する場合、1つのブール値が返されます。要素の比較モードでは、要素が個別に比較され、ブール値の配列またはクラスタが返されます。
基礎群の比較モードでは、文字列関数および配列比較操作は、文字列をASCII文字の配列として処理する比較関数と同じプロセスに従います。
比較関数を右クリックし、ショートカットメニューから比較モード»要素の比較または比較モード»基礎群の比較を選択して、関数のモードを変更します。一部の比較関数は基礎群の比較モードでのみ動作するため、ショートカットメニューの項目が表示されません。
配列
複数次元の配列を比較する場合は、関数に配線される各配列の次元数が同じである必要があります。基礎群の比較モードのみで動作する比較関数は、不一致に遭遇するまで最初の要素から要素を1つずつ比較する文字列の比較と同じ方法で配列を比較します。
要素の比較モード
要素の比較モードでは、比較関数は入力配列と同じ次元のブール値配列を返します。出力配列の各次元は、その次元の2つの入力配列のうちの小さい入力配列と同じサイズになります。行、列、またはページなどの各次元に沿って、関数は各入力配列内の対応する要素の値を比較し、出力配列に対応するブール値を生成します。
基礎群の比較モード
基礎群の比較モードでは、比較関数は、配列内で要素を比較した後に1つのブール結果を返します。比較関数では、英語のアルファベット順のように、決定されるまで順に要素を比較します。英語のアルファベット順では、文字が同じになるまで各単語の文字が比較されます。そのため、関数は以下のステップを実行して比較結果を出します。
- 関数は、配列の先頭から各入力配列の対応する要素を比較します。
- 対応する要素が等しくない場合、関数は停止し、比較の結果を返します。
- 対応する要素が等しい場合、不一致を検出するか、入力配列の1つの最後に達するまで比較関数は次の値のペアを処理します。
- 入力配列内のすべての値は等しいが、1つの配列の最後に余分な要素がある場合、より長い配列がより短い配列よりも大きいと見なされます。たとえば、配列[1,2,3,2]は配列[1,2,3]よりも大きいと見なされます。
| メモ 「範囲内と強制」関数は3つの入力を必要とし、基礎群の比較モードにおいて他の比較関数とは異なる動作をします。この関数は、まず要素の最初のセットを比較した後、上限、下限、x入力のすべての値が等しい場合に限り、次のセットを比較します。値が等しくない場合は、要素の最初のセットの比較結果が返されます。 |
クラスタ
比較するクラスタには同じ数の要素が含まれていて、クラスタ内の各要素は互換性のあるタイプである必要があります。また、要素は同じクラスタ順位である必要があります。たとえば、DBLおよび文字列を含むクラスタとI32および文字列を含むクラスタは比較することが可能です。
要素の比較モード
要素の比較モードでは、比較関数が返すクラスタには、入力クラスタ内の要素のそれぞれに対応するブール要素が含まれます。
基礎群の比較モード
基礎群の比較モードでは、クラスタ内で要素が比較され、結果が1つのブール値で返されます。関数は、結果が出るまで要素を順に比較します。これは、英単語をアルファベット順に並べ替える作業に似ています。単語を並べ替えるには、各単語の文字を異なる文字が見つかるまで先頭から比較します。そのため、関数は以下のステップを実行して比較結果を出します。
- 各入力クラスタの対応する要素を先頭から順に比較します。
- 対応する要素が等しくない場合、関数は停止し、比較の結果を返します。
- 対応する要素が等しい場合、次の値のペアを比較します。不一致が検出されるか、どちらかの入力クラスタの最後の要素に達するまで比較を繰り返します。
- 各入力クラスタのすべての値が等しく、クラスタの1つの最後に余分な要素がある場合、余分な要素を持つクラスタがもう一方のクラスタよりも大きいと見なされます。たとえば、クラスタ[1,2,3,2]はクラスタ[1,2,3]よりも大きいと見なされます。
| メモ 「範囲内と強制」関数は3つの入力を必要とし、基礎群の比較モードにおいて他の比較関数とは異なる動作をします。この関数は、まず要素の最初のセットを比較した後、上限、下限、x入力のすべての値が等しい場合に限り、次のセットを比較します。値が等しくない場合は、要素の最初のセットの比較結果が返されます。 |
ソート済みのデータを含む2つのレコードを比較する場合は、クラスタで基礎群の比較モードを使用します。ここで、クラスタの後方にある要素は、クラスタの前方にある要素の補助的なものとみなされます。たとえば、2つの文字列 (ラストネームの次にファーストネーム) を含んでいるクラスタでは、関数はラストネームのフィールドが一致した場合にのみファーストネームのフィールドを比較します。
リファレンスを比較する
VIサーバリファレンスは、「等しい?」および「等しくない?」比較関数で比較されます。これらの比較関数を使用して、データタイプの配列またはクラスタを同じデータタイプのスカラと比較して、ブール値の配列またはクラスタを生成することができます。これらの関数は、VIサーバリファレンスを比較する際、2つのリファレンスの値または機能が同じかどうかではなく、同じオブジェクトを参照するかどうかを判断してTRUEまたはFALSEを返します。同じオブジェクトに対して複数のリファレンスが作成される可能性があるため、リファレンスの整数値が異なっていても同じオブジェクトを参照している場合があります。また、同じオブジェクトを参照する2つのリファレンスの機能が異なる場合があります。たとえば、リファレンスの1つが認証され、もう一方のリファレンスは認証されない場合でも、両方が同じオブジェクトを参照している可能性があります。
たとえば、デジタル数値制御器への指定リファレンスであるVIサーバリファレンスと、一般リファレンスであるVIサーバリファレンスは、同じオブジェクトを参照する場合は等しくなります。同様に、2つのリファレンスが同じオブジェクトを参照していても、リファレンスの1つが認証されていて他が認証されていない場合、この関数はTRUEを返します。ただし、同じLabVIEWオブジェクトにローカルリファレンスとリモートリファレンスがある場合、「等しい?」関数はFALSEを返します。
バリアントを比較する
バリアントデータを比較する場合、等しいと見なされるためには、そのデータタイプ、値、属性の名前、および属性の値が一致している必要があります。