多態性関数



LabVIEW 2018ヘルプ


発行年月: 2018年3月
製品番号: 371361R-0112
製品情報を参照

ダウンロード (Windowsのみ)


LabVIEW 2016ヘルプ
LabVIEW 2017ヘルプ
LabVIEW 2018ヘルプ
LabVIEW 2019ヘルプ
LabVIEW 2020ヘルプ

多態性とは、異なるデータタイプの入力データに自動的に適応してそのデータを受け入れるVIおよび関数の性質を意味します。どの入力も多態性でない関数、入力の一部が多態性である関数、または入力のすべてが多態性である関数など、関数の多態性の度合いはさまざまです。関数の入力には、数値またはブール値を受け入れるものがあります。数値や文字列を受け入れるものもあります。スカラ数値だけでなく、数値配列、数値クラスタ、数値クラスタ配列などを受け入れるものもあります。また、1次元配列しか受け入れないものもありますが、配列要素はどのタイプでもかまいません。複素数値を含むすべてのタイプのデータを受け入れる関数もあります。また、多態性単位を作成および使用することもできます。

数値変換

数値表記法を他の数値表記法に変換できます。異なる表記法の複数の数値入力を関数に配線すると、通常関数はより大きい(または広い)表記法でデータを返します。関数は実行前により小さい表記法を最も広い表記法に強制変換して、LabVIEWは変換が行われる端子に強制ドットを表示します。

」、「Sine」、「Cosine」など、関数によってはデフォルトで浮動小数点を出力します。入力側に整数を配線すると、これらの関数は整数を倍精度浮動小数点数に変換してから計算を実行します。ただし、多くの場合、数値関数を構成すると、指定したデータタイプを返すことができます。

浮動小数点のスカラ値には通常、倍精度浮動小数点数の使用が最適です。単精度浮動小数点数を使用してもほとんど実行時間は短縮できず、オーバーフローがかなり発生しやすくなります。たとえば解析ライブラリでは、倍精度浮動小数点数を使用します。必要な場合に限り、拡張精度浮動小数点数を使用します。拡張精度の演算のパフォーマンスと精度はプラットフォームによって変わります。

整数の場合は通常、32ビット符号付き整数の使用が最適です。

出力を数値表記方法が異なる接続先に配線すると、LabVIEWは以下の規則に従ってデータを変換します。

  • 符号付きまたは符号なし整数から浮動小数点数―データが可能な限り近い値に変換されます。整数よりも浮動小数点数のほうが正確な場合、この変換は精密です。整数が浮動小数点数よりもより正確な場合、できる限り精度の高い変換が試みられます。
  • 浮動小数点数から符号付きまたは符号なし整数―範囲外の値が整数の最小値または最大値へ移動されます。Forループの反復端子などほとんどの整数オブジェクトは浮動小数点数を四捨五入します。0.5の小数部分を四捨五入して最も近い偶数にします。たとえば、6.5は7ではなく6になります。
  • 列挙体を符号なし整数として処理―たとえば、浮動小数点数である-1を列挙体に変換する場合、値は列挙体の範囲内に強制されます。列挙体の範囲が0~25の場合、値は0に変換されます。
  • 整数から整数―範囲外の値が整数の最小値または最大値に移動されません。元の値が目標値よりも小さい場合は、元の値の符号付き部分の符号部が拡張され、元の値の符号なし部分の余剰ビットに0が配置されます。ソースが目的の数値よりも大きい場合は、その値の最下位ビットのみがコピーされます。
  • 整数、浮動小数点数、または固定小数点数から固定小数点数―固定小数点数の指定範囲外の値は、固定小数点数の最大値および最小値の範囲に強制されます。

数値関数の多態性

演算関数は数値入力データを受け入れます。関数の説明に記述されている例外を除いて、デフォルトの出力には入力と同じ数値表記法が使用されます。また、複数の入力が異なる表記法である場合、デフォルトの出力は入力の数値表記法のうち大きいほうになります。たとえば、入力値として8ビット整数と16ビット整数を受け入れる和関数のデフォルトの出力は16ビット整数です。数値関数の出力を構成する場合、指定した設定がデフォルトの動作よりも優先されます。

演算関数は、数値、数値の配列、数値のクラスタ、数値のクラスタの配列、複素数などで実行できます。使用可能な入力タイプの正式な再帰定義は次のとおりです。

数値タイプ = 数値スカラOR配列[数値タイプ]ORクラスタ[数値タイプ]

数値スカラは、浮動小数点数、整数、または複素数浮動小数点数の場合があります。配列の配列は使用できません。

配列にはサイズおよび次元数の制限がありません。クラスタの要素数にも制限はありません。関数の出力タイプは入力タイプと同じ数値表記法です。入力が1つである関数については、その関数は配列またはクラスタの各要素の演算を行います。

2つの入力を持つ関数については、以下の入力の組み合わせを使用できます。

  • 同一―入力の両方に同じ構造があり、出力の構造は入力と同じです。
  • 1つのスカラ―1つの入力が数値スカラで、他方が配列またはクラスタの場合、出力は配列またはクラスタになります。
  • 配列―1つの入力が数値配列で、他方がその数値配列の数値タイプの場合、出力は配列になります。

同一の入力の場合、LabVIEWは構造の各要素について関数を実行します。たとえば、2つの配列要素の和は要素ごとに実行します。この場合、両方の配列が同じ次元である必要があります。要素数の異なる配列の加算も可能ですが、この場合の出力は最も少ない入力と同じ要素数の配列になります。クラスタは同じ要素数を持ち、各要素が同じタイプである必要があります。

スカラおよび配列(またはクラスタ)を含む演算の場合、LabVIEWはスカラおよび構造の各要素について関数を実行します。たとえば、配列の次元にかかわらず、配列のすべての要素から同じ数値を減算できます。

ある数値タイプおよびそのタイプの配列を含む演算の場合、LabVIEWは各配列の要素について関数を実行します。たとえば、グラフはポイントの配列で、ポイントはx およびyの2つの数値タイプのクラスタです。グラフをx方向に5単位、y方向に8単位移動するには、そのグラフに点(5,8)を加えます。

以下の図は「和」関数での可能な多態性の組み合わせを示します。

ブール関数の多態性

論理関数は、ブール入力データ、数値入力データ、およびエラークラスタを受け入れます。入力が数値の場合、LabVIEWはビット単位の演算を実行します。入力が整数の場合、出力は同じ表記法になります。入力が浮動小数点数の場合は、32ビット整数に四捨五入されるため出力も32ビット整数になります。入力がエラークラスタの場合は、エラークラスタのステータスパラメータのTRUEまたはFALSE値のみが入力端子に渡されます。

論理関数は、数値の配列またはブール値の配列、数値またはブール値のクラスタ、数値またはブール値のクラスタの配列などで実行できます。

使用可能な入力タイプの正式な再帰定義は次のとおりです。

論理タイプ = ブールスカラOR数値スカラOR配列[論理タイプ]ORクラスタ[論理タイプ]

複素数および配列の配列は使用できないので除外します。

2つの入力がある論理関数では、演算関数と同じ入力の組み合わせを持つことができます。ただし、論理関数には基本操作が2つのブール値の間または2つの数値の間に限られるという制約があります。たとえば、ブール値と数値の間でANDは使用できません。以下の図に「和」関数に対するブール値の組み合わせをいくつか示します。

配列関数の多態性

ほとんどの配列関数は、すべてのタイプのn次元を受け入れます。ただし、関数の説明にある配線ダイアグラムでは、数値配列をデフォルトデータタイプとして示します。

文字列関数の多態性

文字列長」、「大文字に変換」、「小文字に変換」、「文字列反転」、および「文字列循環」は、文字列、クラスタ、文字列の配列、およびクラスタの配列を受け入れます。「大文字に変換」および「小文字に変換」は数値、数値のクラスタ、および数値の配列も受け入れ、それらは文字のASCIIコードとみなされます。幅および精度の入力はスカラである必要があります。

文字列変換関数の多態性

パスを文字列に変換」および「文字列をパスに変換」関数は多態性です。つまり、スカラ値、スカラの配列、スカラのクラスタ、スカラのクラスタの配列などを入力できます。出力は入力と構成は同じですが、新しいタイプになります。

その他の文字列→数値変換関数の多態性

「数値を10進数文字列に変換」、「数値を16進数文字列に変換」、「数値を8進数文字列に変換」、「数値を工学形式文字列に変換」、「数値を小数文字列に変換」、および「数値を指数文字列に変換」はクラスタおよび数値の配列を受け入れ、文字列のクラスタおよび文字列の配列を生成します。「10進数文字列を数値に変換」、「16進数文字列を数値に変換」、「8進数文字列を数値に変換」、「小数/指数文字列を数値に変換」は、文字列のクラスタと配列を受け入れ、数値のクラスタと配列を生成します。幅および精度の入力はスカラである必要があります。

クラスタ関数の多態性

バンドル」および「バンドル解除」関数は、オブジェクトを入力または出力端子に配線するまで、それらの各端子のデータタイプを表示しません。配線すると、これらの端子は対応するフロントパネル制御器や表示器端子のデータタイプと同じように表示されます。

比較関数の多態性

等しい?」、「等しくない?」、および「選択」の比較関数は、入力が同じタイプであればどのようなタイプでも使用できます。

以上?」、「以下?」、「小さい?」、「大きい?」、「最大最小」、および「範囲内強制」関数は、入力が同じタイプであれば、複素数、パス、またはRefnumを除くすべてのタイプを使用できます。数値、文字列、ブール値、文字列の配列、数値のクラスタ、文字列のクラスタなどを比較できます。ただし、数値と文字列の比較、文字列とブール値の比較などはできません。

値を0と比較する関数は、数値スカラ、クラスタ、および数値の配列を受け入れます。これらの関数は、入力と同じデータ構造のブール値を出力します。

非数/無効パス/非Refnum?」関数は、値を0と比較する関数と同じ入力タイプを受け入れます。この関数は、パスやRefnumも受け入れます。「非数/無効パス/非Refnum?」関数は、入力と同じデータ構造のブール値を出力します。

10進数?」、「16進数?」、「8進数?」、「印刷可能?」、および「空白?」関数は、スカラ文字列やスカラ数値入力、文字列または非複素数のクラスタ、文字列または非複素数の配列などを受け入れます。出力は、入力と同じデータ構造のブール値から成ります。

空の文字列/パス?」関数は、パス、スカラ文字列、文字列のクラスタ、文字列の配列などを受け入れます。出力は、入力と同じデータ構造のブール値から成ります。

「等しい?」、「等しくない?」、「非数/無効パス/非Refnum?」、「空の文字列/パス?」、および「選択」関数ではパスやRefnumを使用できますが、他の比較関数はパスやRefnumを入力として受け入れません。

配列やクラスタを受け取る比較関数は通常、ブール配列や同じ構造のクラスタを返します。関数から1つのブール値を返す場合、関数を右クリックしてショートカットメニューから比較モード→基礎群の比較を選択し、基礎群の比較を行います。

対数関数の多態性

対数関数は数値入力データを使用します。入力が整数の場合、出力は倍精度浮動小数点数になります。それ以外の場合、出力は入力と同じ数値表記法になります。

これらの関数は、数値、数値の配列、数値のクラスタ、数値のクラスタの配列、複素数などで実行できます。使用可能な入力タイプの正式な再帰定義は次のとおりです。

数値タイプ = 数値スカラOR配列[数値タイプ]ORクラスタ[数値タイプ]

配列の配列は使用できないので除外します。

配列にはサイズおよび次元数の制限はありません。クラスタの要素数にも制限はありません。出力タイプは入力と同じ数値表記法であり、関数はクラスタまたは配列の各要素に対して実行します。以下は2入力対数関数の場合に使用可能な入力タイプの組み合わせを示します。

  • 同一―入力の両方に同じ構造があり、出力の構造は入力と同じです。
  • 1つのスカラ―入力の1つは数値スカラで、他は数値配列またはクラスタの場合、出力は配列またはクラスタになります。


この記事は役に立ちましたか。

役に立たなかった